@SpringBootApplication

这个注解是SpringBoot最核心的注解,用在 Spring Boot 主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。其实这个注解就是 @SpringBootConfiguration@EnableAutoConfiguration@ComponentScan 这三个注解的组合,也可以用这三个注解来代替 @SpringBootApplication 注解。

1
2
3
4
5
6
7
8
9
10
11
12
13
package org.me.xiaohan;  

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

}

@Resource

@Resource 是 Java 中的一个注解,用于进行依赖注入,常用于标记需要注入的资源(如数据库连接、消息队列等)或者其他依赖对象。这个注解在 Java EE(现在称为 Jakarta EE)规范中定义,并且也被一些框架(如 Spring)支持和使用。

@Resource 注解有两种用法:

  1. 按名称注入:
    在需要注入资源或依赖的字段、方法参数、构造函数参数上使用 @Resource 注解,并指定要注入的资源的名称或者 JNDI 路径。例如:

    1
    2
    @Resource(name = "myDataSource")
    private DataSource dataSource;

    这样,在容器启动时,会查找名为 “myDataSource” 的资源,并将其注入到 dataSource 字段中。

  2. 按类型注入:
    你也可以使用 @Resource 注解来按类型注入依赖。这时,不需要指定名称,注解会根据字段或参数的类型进行匹配。例如:

    1
    2
    @Resource
    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. 在字段上使用:

    1
    2
    @Autowired
    private MyService myService;
  2. 在方法参数上使用:

    1
    2
    3
    4
    @Autowired
    public void setMyService(MyService myService) {
    this.myService = myService;
    }
  3. 在构造函数上使用(推荐):

    1
    2
    3
    4
    5
    6
    private final MyService myService;

    @Autowired
    public MyController(MyService myService) {
    this.myService = myService;
    }
  4. 在配置类中使用:

    1
    2
    3
    4
    5
    6
    7
    @Configuration
    public class MyConfiguration {
    @Bean
    public MyService myService() {
    return new MyServiceImpl();
    }
    }

需要注意的是,为了使用 @Autowired 进行自动装配,你需要确保以下条件:

  • 目标类需要在 Spring 容器中注册为一个 Bean。
  • 被注入的成员变量、方法参数或构造函数参数的类型与容器中的某个 Bean 类型匹配。如果有多个匹配的Bean,可以使用 @Qualifier 注解来指定具体要注入的Bean。

此外,Spring Boot 还提供了一些其他的注解来实现依赖注入,比如 @Inject@Resource 等。@Autowired 通常是最常用和推荐的方式,因为它提供了更强大的功能和更好的集成支持。

总的来说,@Autowired 注解在 Spring Boot 中是一个非常重要的特性,它简化了依赖注入的配置,提高了开发效率,使代码更加清晰和易于维护。