技术开发 频道

Spring的新配置选项


【IT168技术文档】 
    Java配置的样式有些有意思的特点,例如:
    参考(例如在例子中”rod” bean的参考)避免重构,任何好的IDE都提供了工具支持. 

    因为配置是Java类.他们可以参与到继承关系,例如,你可以定义需要一些抽象的@Bean在超类中执行的超类. 

    创建了一个新的可视选项,@Bean方法被声明为保护类型,这中情况可以从Spring组件的一般特性中得到益处,在外部并不可见.也就是说它是不可注入的也不能通过在IOC Context中调用getBean()方法来获得. 

    作为Spring XML格式的替代品并不是有意的,像Spring 2.0扩展命名空间,自从Spring1.0属性文件的使用也成为可能.复杂的应用要求配置类型的多样化,Spring的目的在于提供对配置的更好的解决方案.我们继续探讨配置的其他形式. 

    一般我们将Java和XML配置混合使用,你可以在同样的应用上下文中使用多个Java配置类. 

    接下来的例子我们使用XML bean定义来定义MyConfig bean,就像上面说的那样能够像其他普通的bean一样可以注入. ConfigurationPostProcessor使用@Configuration注释来出来所有的beans,产生必要的bean定义.
<beans> <bean class="..MyConfig"/> <bean class="org.springframework.beans.factory.java.ConfigurationPostProcessor"/> <bean class="SomeRandomBean"> <property… </bean> </beans>
    当然,我们可以使用普通bean定义,像这个例子中的SomeRandomBean,你可以构建Java配置和现存XML配置的应用上下文.
使用通配符来从环境变量中加载类,像这样:
ApplicationContext oneConfig = new
AnnotationApplicationContext(SimpleConfiguration.
class.getName()); ApplicationContext aBunchOfConfigs = new
AnnotationApplicationContext(
"**/configuration/*Configuration.class");
    类通过使用(并不加载)ASM来检查,在将来的版本中可能会提供自动检测设定. 

    该实现并不需要对Spring Core进行任何的修改,IOC容器非常灵活,它将配置对象看作一个factory bean并且每个bean定义那个对象的一个实例工厂方法来支持.这种机制从Spring 1.1就可用,在配置实例上没有一点字节码处理,目前使用CGLIB来确保对singleton范围@Bean方法的重复调用总是返回同样的对象.
0
相关文章