码迷,mamicode.com
首页 > 编程语言 > 详细

Spring 注解与xml文件混合声明bean

时间:2015-12-13 00:51:52      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:java   xml   spring   注解   混合   继承   

    在spring中,使用xml文件配置bean的方式比较繁琐,但是具有一定的灵活性,在不更改源代码的情况下就可以更改程序配置或者更改以来关系;使用注解配置的方式高效,但是失去了xml文件的灵活性。

    在这种情况下,我们可以使用xml文件与注解混合使用的方式进行配置bean,在不需要更改属性上可以使用注解的方式进行配置,但是在这个类上面不要使用@Component或者@Controller或者@Serverce等自动装配的注解,否则在xml文件中声明同一个类的bean时,在spring容器中会出现多个类型相同的bean,在自动装配过程中可能会出错(因为有多个相同类型的bean)。在xml文件中声明这个类的bean,这个类中使用@Resource等自动装配的注解也会生效。

例如:

/**
* @ClassName: AbstractXmlGenerator
* @Description: XmlGenerator抽象类,内置一个XmlReader和PathManager
* @date 2015年12月12日 下午9:21:21
*
*/
public abstract class AbstractXmlGenerator implements Generator{
    @Resource
    private XmlReader reader;
    private String xmlFilePath;
    private String query;
    @Resource
    private PathManager pathManager;
    public XmlReader getReader() {
        return reader;
    }
    public void setReader(XmlReader reader) {
        this.reader = reader;
    }

在xml文件中配置:

<bean id="forcedSeedsGenerator" class="collector.generator.AbstractXmlGenerator ">
<property name="query" value="lagou keyword"></property>
<property name="xmlFilePath" value=""></property>
</bean>
@Resource
    private XmlReader reader;

上述的自动装配也会自动进行,即使在xml中对该属性没有显式的配置。    

    若某字段使用了自动装配,而且在xml文件中也对该字段的属性进行了设置,xml文件中声明的这个bean将以xml文件中的配置为主,也就是说xml配置文件覆盖了自动装配。

    当子类继承父类,父类中有自动装配的属性,而且父类并没有在Spring容器中,父类中的自动装配属性也是生效的。

本文出自 “飞鱼技术” 博客,请务必保留此出处http://flyingfish.blog.51cto.com/9580339/1722362

Spring 注解与xml文件混合声明bean

标签:java   xml   spring   注解   混合   继承   

原文地址:http://flyingfish.blog.51cto.com/9580339/1722362

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!