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(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。