前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring@Configuration、@Bean、@Import 、@ImportResource、@DependsOn 说明

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

作者头像
随风溜达的向日葵
发布2018-08-15 11:40:45
7170
发布2018-08-15 11:40:45
举报
文章被收录于专栏:技术墨客技术墨客

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

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

传统XML配置:

代码语言:javascript
复制
<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来实现:

代码语言:javascript
复制
@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元素,案例如下:

代码语言:javascript
复制
@DependsOn({"classA","classB"})
@Component
public class ClassC{
   //codes here
}

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

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

先通过@Configuration声明配置类

代码语言:javascript
复制
@Configuration
public class Config {
    public @Bean ClassA classA () {
        return new ClassA();
    }
}

然后使用@Import导入配置类

代码语言:javascript
复制
@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" />。

使用方式如下:

代码语言:javascript
复制
<bean id="classA" class="com.ClassA">
       <property name="classB" ref="classB" />
</bean>
<bean id="classB" class="com.ClassB"/

Java类注入:

代码语言:javascript
复制
@Configuration
@Import(Config.class)  
@ImportResource("classpath:importxml.xml") //导入xml配置项
public class ConfigExt{

}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016/08/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档