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(控制反转)”