Spring XML配置相关的注解

全文共 1263 个字

使用spring的这几个配置,可以将旧<xml>配置形式完全使用Java实现,也可以和<xml>嵌套使用。

@Configuration和@Bean可以配合使用,案例:

传统XML配置:

<beans>
        <bean id="classA" class="com.ClassA">
                <constructor-arg ref="ClassB"/>
        </bean>
        <bean id="classB" class="com.ClassB">
                <constructor-arg ref="c"/>
        </bean>
        <bean id="classC" class="com.ClassC"/>
</beans>

对应的可以使用@Configuration和@Bean来实现:

@Configuration
public class config{
        public @Bean ClassA classA() {
                return new ClassA(classB());
        }
        public @Bean ClassB classB() {
                return new ClassB(c());
        }
        public @Bean ClassC classC() {

        }
}

@DependsOn注解类似于<xml>的depends-on元素,案例如下:

@DependsOn({"classA","classB"})
@Component
public class ClassC{
   //codes here
}

这样,在初始化ClassC之前,一定会先初始化ClassA和ClassB。

@Import是导入通过@Configuration配置的Bean。

先通过@Configuration声明配置类

@Configuration
public class Config {
    public @Bean ClassA classA () {
        return new ClassA();
    }
}

然后使用@Import导入配置类

@Configuration
@Import(Config.class)  //导入CDConfig的配置
public class ConfigExt {
    @Bean(name = "classB")
    public ClassB classB(ClassA classA) {
        // 注入ClassA类型的bean
        return new ClassB(classA);
    }
}

@ImportResource类似于XML配置的<import>元素,如:<import resource="importxml.xml" />。

使用方式如下:

<bean id="classA" class="com.ClassA">
       <property name="classB" ref="classB" />
</bean>
<bean id="classB" class="com.ClassB"/

Java类注入:

@Configuration
@Import(Config.class)  
@ImportResource("classpath:importxml.xml") //导入xml配置项
public class ConfigExt{

}