1、Spring的简单组成
- bean的生命周期的管理: java对象的创建,使用,销毁等
- 轻量级: 使用简单
- 容器: spring可以管理对象,创建好对象,放入spring容器,容器就是存放对象的
- 组成部分: Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring
- Web和 Spring Web MVC。
2、Spring的环境搭建
2.1导入依赖
<!-- 只需导入spring-context依赖,其他依赖maven会自动关联导入 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.6.RELEASE</version>
</dependency>
2.2导入核心配置文件
名字: 无限制,但是一般有spring.xml,spring-context.xml,beans.xml, applicationContext.xml
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 后续再填充 -->
</beans>
使用spring管理bean
<bean id="xxx" class="xxx"/>
创建工厂Bean
工厂bean,即创建工厂对象,由工厂加载配置文件,通过配置文件创建容器,从容器中获得对象
String path = "applicationContext.xml";
// 通过配置文件,创建容器
ApplicationContext context = new ClassPathXmlApplicationContext(path);
// 从容器中获得对象(通过标签的id)
MyClass myClass = context.getBean("myClass", MyClass.class);
myClass.test();
IOC+DC
IOC是Spring框架的核心功能之一,IOC(inversion of control)控制反转
控制: 控制创建对象的能力
反转: 原来创建对象是自己做,反转就是将创建对象的能力交给Spring
IOC(控制反转): 将创建对象的能力反转给Spring,由Spring创建对象
DI(dependency injection) 依赖注入: 属性赋值
IOC
现在创建对象交给Spring来做,代码如下
applicationContext.xml
<bean id="xxx" class="xxx"/>
DI
DI : 依赖注入,即属性赋值
- set方法注入【重点】
- 构造方法注入【了解】
- 自动注入【理解-后续注解就是这个思路】
set方法注入
- 属性要有set方法
- 注入时bean标签内写property标签
- property标签name写属性名
- property标签中,给基本类型赋值用value,给引用类型赋值用ref
注解开发(重点)
首先需要在配置文件中开启扫描
<context:component-scan base-package="com.qf"/>
注解使用细节
标签:xml,容器,Spring,创建对象,搭建,IOC,注入 From: https://www.cnblogs.com/qiyuancc/p/17476197.html
- IOC创建对象的注解,四个功能一样,都可以创建对象,只不过建议不同的位置使用不同的注解,见名知意
- 加上创建对象的注解后,默认对象名是 类名首字母小写 ,即需要通过类名首字母小写从容器中获得对
象- 其实可以在注解中设置参数,给对象取名.例如@Service("aaa"),以后就用aaa从容器中取值
- 自动注入时@Autowired ,默认 按照类型 注入
- 但是如果容器中有两个该类型的bean,自动注入就会失败,此时可以 按名字注入
- 如果不使用@Resource按名字注入,也可以使用 @Qualifier("XXXX") 配合
@Autowired一起实现,按照名字注入- 可以给类加@Scope("prototype|singleton") 来控制单例多例