返回

SpringBoot 注解 `@Value` `@Resource` `@PostConstruct` `@PreDestroy` 详解

后端

  1. @Resource 实现依赖注入

@Resource 注解是 Java EE 规范的一部分,用于实现依赖注入,它可以将一个 bean 的属性注入到另一个 bean 中。@Resource 注解有以下几个特点:

  1. 可以用于类、方法和字段上。
  2. 可以通过 name 属性指定注入的 bean 名称。
  3. 可以通过 type 属性指定注入的 bean 类型。
  4. 如果不指定 name 属性和 type 属性,则默认注入同类型的 bean。
  5. 如果存在多个同类型的 bean,则需要使用 @Qualifier 注解指定要注入的 bean。
@Service
public class UserService {

    @Resource
    private UserRepository userRepository;

    public List<User> findAll() {
        return userRepository.findAll();
    }
}

在上面的示例中,@Resource 注解用于将 UserRepository bean 注入到 UserService bean 中。

2. @Value 详细使用

@Value 注解用于将外部配置文件中的值注入到 bean 中,它可以将简单值、表达式或 SpEL 表达式注入到 bean 中。@Value 注解有以下几个特点:

  1. 可以用于类、方法和字段上。
  2. 可以通过 value 属性指定注入的值。
  3. 可以通过 spel 属性指定注入的 SpEL 表达式。
  4. 可以通过 defaultValue 属性指定默认值。
@Component
public class ConfigBean {

    @Value("${spring.datasource.username}")
    private String username;

    @Value("${spring.datasource.password}")
    private String password;

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }
}

在上面的示例中,@Value 注解用于将 spring.datasource.usernamespring.datasource.password 这两个属性的值注入到 ConfigBean bean 中。

3. @PostConstruct @PreDestroy 的使用

@PostConstruct 注解用于在 bean 初始化之后执行的方法,@PreDestroy 注解用于在 bean 销毁之前执行的方法。这两个注解可以用来做一些初始化和销毁的操作,例如:

  1. 打开数据库连接。
  2. 初始化缓存。
  3. 释放资源。
@Service
public class UserService {

    @PostConstruct
    public void init() {
        System.out.println("UserService 初始化");
    }

    @PreDestroy
    public void destroy() {
        System.out.println("UserService 销毁");
    }
}

在上面的示例中,@PostConstruct 注解用于在 UserService bean 初始化之后执行 init() 方法,@PreDestroy 注解用于在 UserService bean 销毁之前执行 destroy() 方法。

总结

@Resource@Value@PostConstruct@PreDestroy 这四个注解是 SpringBoot 中常用的注解,它们可以帮助我们更好地进行依赖注入、配置和初始化。