2019.12.02——Spring学习(ioc)

Posted geekshawn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019.12.02——Spring学习(ioc)相关的知识,希望对你有一定的参考价值。

Spring概念

1. Spring是开源的轻量级框架;

2. Spring核心:IOC(控制反转)、AOP(面向切面编程);

3. Spring是一站式框架:Spring在javaee三层结构中,每层都提供不同的解决技术:

- web层:springMVC

- service层:IOC

- dao层:JDBCTemplate

 

Spring的IOC操作

1. 对象创建交给Spring进行管理;

2. IOC操作的两种方式:配置文件、注解。

 

IOC底层原理

原文链接:Spring IOC的原理及详解

1. IOC的提出是为了解决对象之间耦合度过高的问题,IOC作为“第三方”实现具有依赖关系的对象之间的解耦;

2. 控制反转:对象A获得依赖对象B的过程,由主动行为变为了被动行为,控制权颠倒过来了;

3. 依赖注入:IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。控制被反转之后,获得依赖对象的过程由自身管理变为了由IOC容器主动注入;

4. IOC中最基本的技术就是“反射(Reflection)”编程;

5. 我们可以把IOC容器的工作模式看做是工厂模式的升华,可以把IOC容器看作是一个工厂,这个工厂里要生产的对象都在配置文件中给出定义,然后利用编程语言的的反射编程,根据配置文件中给出的类名生成相应的对象。从实现来看,IOC是把以前在工厂方法里写死的对象生成代码,改变为由配置文件来定义,也就是把工厂和对象生成这两者独立分隔开来,目的就是提高灵活性和可维护性。

 

IOC底层使用的技术

1. xml配置文件

2. dom4j解析xml

3. 工厂设计模式

4. 反射

 

IOC入门案例

1. 导入jar包

做Spring最基本功能的时候,需要导入四个核心的jar包以及支持日志输出的jar包。

技术图片

技术图片

2. 创建类及其成员函数

 1 public class User {
 2     
 3     public void fun() {
 4         System.out.println("Just a function.");
 5     }
 6     
 7     public static void main(String[] args) {
 8         // 原始做法
 9         // User user = new User();
10         // user.fun();
11     }
12 }

 3. 创建Spring配置文件

(1)Spring核心配置文件名称和位置不是固定的,最好放在src里面,官方推荐名称为applicationContext.xml(可自行修改);

(2)引入schema约束。Spring在启动的时候需要验证xml文档,约束的作用就是来验证配置文件(xml文档)的语法正确性。XML文档的schema约束定义了文档的结构,内容和语法,元素和属性等。

1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
5 </beans>

(3)配置对象创建

1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
5     <!-- ioc example -->
6     <bean id="user" class="cn.itcast.ioc.User"></bean>
7 </beans>

(4)编写测试代码

 1 import org.junit.Test;
 2 import org.springframework.context.ApplicationContext;
 3 import org.springframework.context.support.ClassPathXmlApplicationContext;
 4 
 5 public class TestIOC {
 6 
 7     @Test
 8     public void testUser() {
 9         //1 加载spring配置文件,根据配置文件创建对象
10         ApplicationContext context = 
11                 new ClassPathXmlApplicationContext("bean.xml");
12         //2 得到配置创建的对象
13         User user = (User) context.getBean("user");
14         System.out.println(user);
15         user.fun();
16     }
17 }

技术图片

 

 

 

 

以上是关于2019.12.02——Spring学习(ioc)的主要内容,如果未能解决你的问题,请参考以下文章

Spring5学习笔记 — “Spring IOC(控制反转)”

spring学习 ———— IOC讲解

Spring学习总结——Spring实现IoC的多种方式

Spring学习3—控制反转(IOC)Spring依赖注入(DI)和控制反转(IOC)

Spring学习笔记--Spring IOC

Spring学习1:初识控制反转(IOC)——Hello,Spring