Spring @Bean注解配置及使用方法解析
使用说明
这个注解主要用在方法上,声明当前方法体中包含了最终产生bean实例的逻辑,方法的返回值是一个Bean。这个bean会被Spring加入到容器中进行管理,默认情况下bean的命名就是使用了bean注解的方法名。@Bean一般和@Component或者@Configuration一起使用。
@Bean显式声明了类与bean之间的对应关系,并且允许用户按照实际需要创建和配置bean实例。
该注解相当于:
普通组件
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
@Configuration
publicclassMyConfigration{
@Bean
publicUseruser(){
returnnewUser;
}
}
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.web.bind.annotation.GetMapping;
importorg.springframework.web.bind.annotation.RestController;
@RestController
publicclassUserController{
@Autowired
Useruser;
@GetMapping("/test")
publicUsertest(){
returnuser.test();
}
}
命名组件
bean的命名为:user,别名为:myUser,两个均可使用
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
@Configuration
publicclassMyConfigration{
@Bean(name="myUser")
publicUseruser(){
returnnewUser;
}
}
bean的命名为:user,别名为:myUser/yourUser,三个均可使用
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
@Configuration
publicclassMyConfigration{
@Bean(name={"myUser","yourUser"})
publicUseruser(){
returnnewUser;
}
}
Bean初始化和销毁
publicclassMyBean{
publicvoidinit(){
System.out.println("MyBean初始化...");
}
publicvoiddestroy(){
System.out.println("MyBean销毁...");
}
publicStringget(){
return"MyBean使用...";
}
}
@Bean(initMethod="init",destroyMethod="destroy")
publicMyBeanmyBean(){
returnnewMyBean();
}
只能用@Bean不能使用@Component
@Bean
publicOneServicegetService(status){
case(status){
when1:
returnnewserviceImpl1();
when2:
returnnewserviceImpl2();
when3:
returnnewserviceImpl3();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。