SpringBoot 常用注解 -- 容器配置 注解

SpringBoot 常用注解 – 容器配置 注解

摘自:https://mp.weixin.qq.com/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);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值