目录
Spring IoC(Inversion of Control,控制反转)容器通过注解提供了一种简洁且强大的方式来进行依赖注入和配置管理。注解开发使得 Spring 应用程序的配置更为简洁和直观,减少了 XML 配置的冗余和复杂性。注解本身并不能执行,注解本身仅仅只是做一个标记,具体的功能是框架检测到注解标记的位置,然后针对这个位置按照注解标记的功能来执行具体操作。
1、如何使用注解标记和扫描
通过注解实现IOC 主要分为两步
- 在类上配置IOC注解
- 告诉spring ioc容器我们在哪个类上面添加了ioc注解
Spring 提供了以下多个注解,这些注解可以直接标注在 Java 类上,将它们定义成 Spring Bean。
@Component | 该注解用于描述 Spring 中的 Bean,它是一个泛化的概念,仅仅表示容器中的一个组件(Bean),并且可以作用在应用的任何层次,例如 Service 层、Dao 层等。 使用时只需将该注解标注在相应类上即可。 |
@Repository | 该注解用于将数据访问层(Dao 层)的类标识为 Spring 中的 Bean,其功能与 @Component 相同。 |
@Service | 该注解通常作用在业务层(Service 层),用于将业务层的类标识为 Spring 中的 Bean,其功能与 @Component 相同。 |
@Controller | 该注解通常作用在控制层(如SpringMVC 的 Controller),用于将控制层的类标识为 Spring 中的 Bean,其功能与 @Component 相同。 |
@Controller、@Service、@Repository这三个注解只是在@Component注解的基础上起了三个新的名字。对于Spring使用IOC容器管理这些组件(组件就是bean)来说没有区别,也就是语法层面没有区别。
接下来我们举个简单的例子学习下注解如何使用
首先准备一个普通的组件(包括xml配置文件、common普通组件、controller组件、service组件、dao组件)
xml配置文件
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.11.RELEASE</version>
</dependency>
<!-- junit5测试依赖-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.1</version>
<scope>test</scope>
</dependency>
</dependencies>
common组件
public class CommonComponent {
}
controller组件
public class XxxController {
}
service组件
public class XxxService {
}
dao组件
public class XxxDao {
}
我们如果想要上面的组件通过注解方式被ioc管理,只需要2步
第一步:在上面的组件类上加注解
common组件
@Comp