spring3装配Bean
装配方式有三种,自动装配、java代码装配以及xml方式。spring3之后提供javaConfig方式配置,简化xml配置,且增强了灵活性,下面简要说明spring的自动装配Bean及javaConfig方式配置。
1.自动装配Bean
自动装配主要通过注解实现,首先在pojo上增加注解,指定其为spring扫描对象。
spring常用注解
@Component (@Name)
@Autowired (@Inject)
当 Spring 容器启动时,
AutowiredAnnotationBeanPostProcessor
将扫描 Spring 容器中所有 Bean,当发现 Bean 中拥有@Autowired
注释时就找到和其匹配(默认按类型匹配)的 Bean,并注入到对应的地方中去。
所以对类成员变量使用@Autowired
后,Spring 将直接采用Java反射机制对私有成员变量进行自动注入,可以将它们的 setter 方法从类中删除。当然,也可以通过@Autowired
对方法或构造函数进行标注。
@ComponentScan
默认会扫描与配置类相同的包,也可以通过basePackage属性进行指定包。与xml中的配置一致:
<context:component-scan>
,一般扫描注解在配置类上使用,也可以在xml中设置。- @Configuration :指定当前类为配置类。
- @ComponentScan
2.java代码装配
JavaConfig与其他的Java代码又有所区别,在概念上,它与应用程序中的业务逻辑和领域代码是不同的。通常会将JavaConfig放到单独的包中,使它与其他的应用程序逻辑分离开来,这样对于它的意图就不会产生困惑了。 创建JavaConfig类的关键在于为其添加@Configuration注解,@Configuration注解表明这个类是一个配置类,该类应该包含在Spring应用上下文中如何创建bean的细节。尽管在很多场景下通过组件扫描和自动装配实现Spring的自动化配置是更为推荐的方式,但有时候自动化配置的方案行不通,因此需要明确配置Spring。
比如说,你想要将第三方库中的组件装配到你的应用中,在这种情况下,是没有办法在它的类上添加@Component和@Autowired注解的,因此就不能使用自动化装配的方案了。
在这种情况下,你必须要采用显式装配的方式。在进行显式配置的时候,有两种可选方案:Java和XML。
@Bean
该注解会告诉Spring这个方法将会返回一个对象,该对象要注册为Spring应用上下文中的bean。方法体中包含了最终产生bean实例的逻辑。
@Import
注解可以导入@Configuration注解对应的配置类,从而现实多个配置进行整合。
@ImportResource注解
利用该注解Spring同时加载xml和其他基于Java的配置。示例:@ImportResource(“classpath:bean-config.xml”)