SpringBoot 常用注解 – 容器配置 注解
摘自:https://mp.weixin.qq/s/dWIO1bfmMhVWo1ZPVIS09Q
@Autowired
说明:
@Autowired注解用于标记Spring将要解析和注入的依赖项。此注解可以作用在构造函数、字段和setter方法上。
示例(作用于构造函数)
@RestController
public class UserController {
private UserService userService;
@Autowired
UserController(UserService userService){
this.userService userService;
}
}
示例(作用于setter方法)
@RestController
public class UserController{
private UserService userService;
@Autowired
public void setUserService(UserService userService){
this.userService userService;
}
}
示例(作用于字段)
@RestController
public class UserController {
@Autowired
private UserService userService;
// ..
}
@Primary
说明:
当系统中需要配置多个具有相同类型的bean时,@Primary可以定义这些Bean的优先级。
示例:
public interface Messageservice {
String sendMessage();
}
@Component
public class EmailMessageServiceImpl implements Messageservice {
@Override
public string sendMessage(){
return "this is send email method message.";
}
}
@Component
public class WechatMessageImpl implements Messageservice {
@Override
public String sendMessage(){
return "this is send wechat method message.";
}
}
@Primary
@Component
public class DingDingMessageImple implements Messageservice{
@Override
public String sendMessage(){
return "this is send DingDing method message.";
}
}
@RestController
public class MessageController{
@Autowired
private MessageService messageService;
@GetMapping("/info")
public string info(){
return messageService.sendMessage();
}
}
输出结果:this is send DingDing method message.
@PostConstruct与@PreDestroy
说明:
值得注意的是,这两个注解不属于Spring,它们是源于JSR-250中的两个注解,位于common-annotations.jar中。@PostConstruct注解用于标注在Bean被Spring初始化之前需要执行的方法。@PreDestroy注解用于标注Bean被销毁前需要执行的方法。
示例:
@Component
public class DemoComponent {
private List<string>list = new ArrayList();
@PostConstruct
public void init(){
list.add("hello");
list.add("world");
}
@PreDestroy
public void destroy(){
list.clear()
}
}
@Qualifier
说明:
当系统中存在同一类型的多个Bean时,@Autowired在进行依赖注入的时候就不知道该选择哪一个实现类进行注入。此时,我们可以使用@Qualifier注解来微调,帮助@Autowired选择正确的依赖项。
示例:
public interface MessageService {
public String sendMessage(String message);
}
@Service("emailService")
public class EmailServiceImple implements Messageservice {
@Override
public String sendMessage(String message){
return "send email,content:"+message;
}
}
@Service("smsService")
public class SMSServiceImpl implements Messageservice{
@Override
public String sendMessage(String message){
return "send SMS,content:"+message;
}
}
public interface MessageProcessor {
public String processMessage(String message);
}
public class MessageProcessorImpl implements MessageProcessor{
private MessageService messageService;
@Autowired
@Qualifier("emailService")
public void setMessageService(MessageService messageService){
this.messageService messageservice;
}
@Override
public String processMessage(String message){
return messageService.sendMessage(message);
}
}
更多推荐
SpringBoot 常用注解 -- 容器配置 注解
发布评论