Spring IOC/DI
学习目标
1、spring简介
2、spring IOC/DI
3、spring bean封装机制
BeanFactory 和ApplicationContext接口
4、spring注入(构造注入、设值注入、自动注入)
5、基于注解的容器配置
学习内容
1、spring简介
![faef7788a6bf362341ac35d8c8485c01.png](https://i-blog.csdnimg.cn/blog_migrate/234d3a20315603cfb4a938f25b80e86d.jpeg)
spring是一个开源框架,为了解决企业应用开发的复杂性而创建的。
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
Spring 的优势
- 低侵入 / 低耦合 (降低组件之间的耦合度,实现软件各层之间的解耦)
- 声明式事务管理(基于切面和惯例)
- 方便集成其他框架(如MyBatis、SpringMVC)(SSM)
- 降低 Java 开发难度
- Spring 框架中包括了 J2EE 三层的每一层的解决方案(一站式)
![2deef40a88a990d16681145d7d0eebba.png](https://i-blog.csdnimg.cn/blog_migrate/1f397dec501f2e17e81646915fcac882.jpeg)
Spring 模块构成
2、spring IOC/DI
问题:以前创建对象?
new 对象(),程序负责完成,耦合度高,不利于扩展。
IOC:Inversion of Control 控制反转;是spring的核心。
控制反转:
对象的创建方式发生了改变,不需要程序去new,交给spring容器去负责创建和维护。
DI:Dependency Injection :依赖注入;引用对象的创建交给spring容器去负责。
![071ff2b80fce41e3625a7b10af46b11a.png](https://i-blog.csdnimg.cn/blog_migrate/c5c63b753217b5e2578783708b7d1ba3.jpeg)
提供需求交个spring容器
![7df14f28af787f49842d59496332da65.png](https://i-blog.csdnimg.cn/blog_migrate/2eec3b7b6b3363ecdfc703a6574f69f6.jpeg)
注入
![55074fd9579330ec8072e222b1dd0eb0.png](https://i-blog.csdnimg.cn/blog_migrate/dc281558d3913f6360b595af5def6928.jpeg)
官网配图
3、spring bean封装
Spring IoC容器使用一种配置元数据。此配置元数据表示您作为应用程序开发人员如何告诉Spring容器在应用程序中实例化,配置和组装对象。
spring全局配置文件:
<?xml version="1.0" encoding="UTF-8"?>
- 该id属性是一个标识单个bean定义的字符串
- 该class属性定义bean的类型并使用完全限定的类名
常用属性:
scope属性:bean的作用域;
- singleton :单例(默认)
- prototype:原型
- request:一次请求
- session:会话
- application:应用
- websocket: 套接字
4、创建第一个Spring项目
1、引入jar包
org.springframework spring-core ${spring.version}org.springframework spring-beans ${spring.version}org.springframework spring-context ${spring.version}org.springframework spring-test ${spring.version}test
2、创建配置文件
resources/applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
3、配置成bean
创建实体类,并配置bean(参考上面bean的封装):
4、实例化容器测试
//基于类路径的方式去加载配置文件 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); // //根据id获取bean UserService service1= context.getBean("userService