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约束定义了文档的结构,内容和语法,元素和属性等。

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

(4)编写测试代码

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

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/geekshawn/p/11985801.html