转自:
Spring注解中的@Component @Configuration @Bean简介说明
下文笔者讲述Spring注解中@Component @Configuration @Bean功能的简介说明
@Component组件可替代@Configuration注解 原因如下所示:@Component包含@Configuration注解 @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component //看里!!! public @interface Configuration { String value() default ""; }
@Bean注解的功能
Bean注解主要用于方法上,类似于工厂方法
用于返回一个Bean对象
例:
使用@Configuration 来注解类表示类可以被 Spring 的 IoC 容器所使用,作为 bean 定义的资源。 @Configuration public class AppConfig { @Bean public UserService userService() { return new UserServiceImpl(); } } 其效果类似于xml配置
@Configuration public static class Config { @Bean public UserBean userBean() { return new UserBeanImpl(); } /* *这是一个错误的写法,因为userBean()会new一个实例 *将跳出Spring容器外 */ @Bean public UserBeanConsumer userBeanConsumer() { return new UserBeanConsumer(userBean()); } } @Component public static class Config { @Bean public UserBean userBean() { return new UserBeanImpl(); } /* *这是一个错误的写法,因为userBean()会new一个实例 *将跳出Spring容器外 */ @Bean public UserBeanConsumer userBeanConsumer() { return new UserBeanConsumer(userBean()); } }
以上代码的正确写法
@Configuration public static class Config { @Autowired UserBean userBean; @Bean public UserBean userBean() { return new UserBeanImpl(); } @Bean public UserBeanConsumer userBeanConsumer() { return new UserBeanConsumer(userBean); } }