介绍
spring一般是指spring framework或者spring全家桶。
spring的核心技术为ioc和aop。
参考
官方文档
IOC
IOC,全称Inversion of Control,控制反转。经典的,我们用关键字new去主动创建对象,而将创建对象的工作交给容器再根据需要请求获取的方式称之为控制反转,该容器称为IOC容器。
1、简单使用
(1)jar包:spring-context
(2)配置
<?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">
<bean id="..." class="...">
</beans>
(3)代码
User.java类:id、username和password
Test.java
自spring5起,需要jdk8+的支持
2、容器
(1)BeanFactory:基本的bean对象管理
- XmlBeanFactory:BeanFactory的重要实现类
(2)ApplicationContext:BeanFactory的子接口,提供了企业级的支持 - WebXmlApplicationContext:用于网络加载
- FileSystemXmlApplicationContext:参数为配置文件的系统路径
- ClassPathXmlApplicationContext:参数为项目的相对路径
实例化容器(可以一次性加载多个配置文件)
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
也可以在配置文件中加载其它配置文件
<beans>
<import resource="services.xml"/>
<import resource="resources/messageSource.xml"/>
<import resource="/resources/themeSource.xml"/>
<bean id="bean1" class="..."/>
<bean id="bean2" class="..."/>
</beans>
3、生命周期与作用域范围
配置scope来控制对象的作用域范围,默认为singleton
- singleton:单例,在容器加载时创建。当应用结束,容器销毁时被销毁。
- prototype:多例,每次请求时创建,对象使用结束时销毁。
- request
- session
4、创建bean
5、注入
6、常用注解
基于注解的容器配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
</beans>
- @Required
- @Autowired
- @Qualifier
- @Primary
- @Resource
自动检测类并注册bean定义
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="org.example"/>
</beans>
- @Component