Spring@Configuration、@Bean、@Import 、@ImportResource、@DependsOn 说明

使用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{

}

 

 

转载于:https://my.oschina.net/chkui/blog/738568

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值