返回 2.
3.
SpringBoot 注解 `@Value` `@Resource` `@PostConstruct` `@PreDestroy` 详解
后端
2024-02-10 15:22:40
@Resource
实现依赖注入
@Resource
注解是 Java EE 规范的一部分,用于实现依赖注入,它可以将一个 bean 的属性注入到另一个 bean 中。@Resource
注解有以下几个特点:
- 可以用于类、方法和字段上。
- 可以通过 name 属性指定注入的 bean 名称。
- 可以通过 type 属性指定注入的 bean 类型。
- 如果不指定 name 属性和 type 属性,则默认注入同类型的 bean。
- 如果存在多个同类型的 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
注解有以下几个特点:
- 可以用于类、方法和字段上。
- 可以通过 value 属性指定注入的值。
- 可以通过 spel 属性指定注入的 SpEL 表达式。
- 可以通过 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.username
和 spring.datasource.password
这两个属性的值注入到 ConfigBean
bean 中。
3. @PostConstruct
@PreDestroy
的使用
@PostConstruct
注解用于在 bean 初始化之后执行的方法,@PreDestroy
注解用于在 bean 销毁之前执行的方法。这两个注解可以用来做一些初始化和销毁的操作,例如:
- 打开数据库连接。
- 初始化缓存。
- 释放资源。
@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 中常用的注解,它们可以帮助我们更好地进行依赖注入、配置和初始化。