Post

spring_01

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 的生命周期分为四个阶段:

  1. 实例化(Instantiation)
  2. 属性设置(populate)
  3. 初始化(Initialization)
  4. 销毁(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 对于事务支持的实现:

  1. 在 Spring 的 xml 配置文件中,使用 bean 标签初始化配置事务的管理器类 DataSourceTransactionManager;

  2. 在 Spring 的 xml 配置文件中,通过 tx:advice 节点配置事务使用的通知方式,已经支持的事务级别;

  3. 在 Spring 的 xml 配置文件中,通过 aop:config 节点指定切入点,说明哪些类的哪些方法需要支持事务,同时将配置的切入点和通知整合到一起。

This post is licensed under CC BY 4.0 by the author.