SpringBoot注解详解
@SpringBootApplication
这个注解是SpringBoot最核心的注解,用在 Spring Boot 主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。其实这个注解就是 @SpringBootConfiguration
、@EnableAutoConfiguration
、@ComponentScan
这三个注解的组合,也可以用这三个注解来代替 @SpringBootApplication 注解。
1 | package org.me.xiaohan; |
@Resource
@Resource
是 Java 中的一个注解,用于进行依赖注入,常用于标记需要注入的资源(如数据库连接、消息队列等)或者其他依赖对象。这个注解在 Java EE(现在称为 Jakarta EE)规范中定义,并且也被一些框架(如 Spring)支持和使用。
@Resource
注解有两种用法:
按名称注入:
在需要注入资源或依赖的字段、方法参数、构造函数参数上使用@Resource
注解,并指定要注入的资源的名称或者 JNDI 路径。例如:1
2
private DataSource dataSource;这样,在容器启动时,会查找名为 “myDataSource” 的资源,并将其注入到
dataSource
字段中。按类型注入:
你也可以使用@Resource
注解来按类型注入依赖。这时,不需要指定名称,注解会根据字段或参数的类型进行匹配。例如:1
2
private MyService myService;这会查找一个类型为
MyService
的实例,并将其注入到myService
字段中。
需要注意的是,@Resource
注解不仅仅适用于依赖注入,还可以用于其他一些资源的注入,如 EJB(Enterprise JavaBeans)等。另外,@Resource
注解在 Java SE 环境中的支持相对有限,通常在 Java EE 或 Jakarta EE 环境中使用较多。
在 Spring 框架中,通常推荐使用 @Autowired
注解来进行依赖注入,因为它提供更强大的依赖注入功能,并且更容易与 Spring 的 IoC(控制反转)容器集成。
@Autowired
在 Spring Boot 中,@Autowired
是一个用于实现依赖注入的注解,它可以用来自动装配(注入)Spring容器中的Bean到目标类中。Spring Boot 是基于 Spring 框架的,但为了简化配置和提供更好的开发体验,它引入了一些便利性功能,包括自动装配。
使用 @Autowired
注解,你可以将一个类的成员变量、方法参数或构造函数参数与容器中的Bean关联起来,从而实现自动的依赖注入。这样,Spring Boot 会自动寻找匹配的Bean并将其注入到目标对象中,而无需手动编写繁琐的配置代码。
以下是 @Autowired
注解的几种使用方式:
在字段上使用:
1
2
private MyService myService;在方法参数上使用:
1
2
3
4
public void setMyService(MyService myService) {
this.myService = myService;
}在构造函数上使用(推荐):
1
2
3
4
5
6private final MyService myService;
public MyController(MyService myService) {
this.myService = myService;
}在配置类中使用:
1
2
3
4
5
6
7
public class MyConfiguration {
public MyService myService() {
return new MyServiceImpl();
}
}
需要注意的是,为了使用 @Autowired
进行自动装配,你需要确保以下条件:
- 目标类需要在 Spring 容器中注册为一个 Bean。
- 被注入的成员变量、方法参数或构造函数参数的类型与容器中的某个 Bean 类型匹配。如果有多个匹配的Bean,可以使用
@Qualifier
注解来指定具体要注入的Bean。
此外,Spring Boot 还提供了一些其他的注解来实现依赖注入,比如 @Inject
、@Resource
等。@Autowired
通常是最常用和推荐的方式,因为它提供了更强大的功能和更好的集成支持。
总的来说,@Autowired
注解在 Spring Boot 中是一个非常重要的特性,它简化了依赖注入的配置,提高了开发效率,使代码更加清晰和易于维护。