spring_01
spring
1
2
3
4
5
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.27</version>
</dependency>
IoC
对象的实例化由 Spring 框架加载实现,放到 Spring 的容器中管理,避免了我们手动的 new 对象,有需要用到对象实例依赖,直接向 Spring 容器要即可,而一旦涉及到对象的实例修改,那么 只需更改 Spring 加载实例化对象的地方,程序代码无需改动,降低了耦合,提升了扩展性。 BeanFactory 提供了配置框架和基本功能,并在 ApplicationContext 中增加了更多针对企业的功能。 BeanFactory 和 ApplicationContext 的区别: 创建对象的时间点不一样。 ApplicationContext:只要一读取配置文件,默认情况下就会创建对象。 BeanFactory:什么时候使用,什么时候创建对象。
org.springframework.context.ApplicationContext 接口实例化,配置和组装 Bean
xml bean标签属性
| 学号 | 姓名 | | ————– | —————- | | id | 定义的唯一标识 | | name | 同 id 的意义一致 | | class | 类 | | factory-bean | 工厂对象 | | factory-method | 工厂方法 | | init-method | 初始化执行的方法 | | destroy-method | 销毁执行的方法 | | scope | 对象的作用域 | | lazy-init | 懒加载 | | autowire | 依赖注入 | | depends-on | 依赖于某个实例 |
注解
@Component :一般用于通用组件的类上使用的注解; @Service : 一般用于业务层类上使用的注解; @Controller : 一般用于控制层类上使用的注解; @Repository :一般用于持久层类上使用的注解。(Dao)
@Autowired: 此注解自动按照类型注入。从容器中寻找符合依赖类型的实例,当使用该注解注入属性时,set 方法可以省略。但是因为按照类型匹配,如果容器中有多个匹配的类型,会抛出异常,需要指定引入的实例 id。如果找不到匹配的实例,那么也会抛出异常; @Qualifier: 此注解不能单独使用,它的作用是在按照类型注入的基础之上,再按照 Bean 的 id 注入。所以如果是使用了 @Autowire 注解自动注入,但是容器中却有多个匹配的实例,可以搭配此注解,指定需要注入的实例 id; @Resource 此注解的作用是指定依赖按照 id 注入,还是按照类型注入。当只使用注解,但是不指定注入方式的时候,默认按照 id 注入,找不到再按照类型注入。
@Bean:此注解作用于方法上,表示方法返回的实例初始化到由 Spring 管理的容器中。 @Configuration:是配置,也就是相当于我们之前编写过很多次的 Spring 配置文件 ——Applicationcontext.xml @ComponentScan:相当于配置文件中用过的标签 context:component-scan,
生命周期
一个 Bean 的生命周期分为四个阶段:
- 实例化(Instantiation)
- 属性设置(populate)
- 初始化(Initialization)
- 销毁(Destruction)
AOP 面向切面编程
@Aspect: 此注解用于表明某个类为切面类,而切面类的作用我们之前也解释过,用于整合切入点和通知; @Pointcut: 此注解用于声明一个切入点,表明哪些类的哪些方法需要被增强; @Before: 此注解一看就明白,表示一个前置通知。即在业务方法执行之前做的事情; @AfterReturning: 此注解表示一个后置通知。即在业务方法执行之后做的事情; @After:此注解一个最终通知。即在业务方法执行之前做的事情; @AfterThrowing:此注解表示一个异常通知。即在业务代码执行过程中出现异常做的事情。
事务支持
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.27</version>
</dependency>
<!-- Spring jdbc 使用的依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.27</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.27</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.20</version>
</dependency>
</dependencies>
xml 对于事务支持的实现:
在 Spring 的 xml 配置文件中,使用 bean 标签初始化配置事务的管理器类 DataSourceTransactionManager;
在 Spring 的 xml 配置文件中,通过 tx:advice 节点配置事务使用的通知方式,已经支持的事务级别;
在 Spring 的 xml 配置文件中,通过 aop:config 节点指定切入点,说明哪些类的哪些方法需要支持事务,同时将配置的切入点和通知整合到一起。