【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定义.
当然,我们可以使用普通bean定义,像这个例子中的SomeRandomBean,你可以构建Java配置和现存XML配置的应用上下文.<beans>
<bean class="..MyConfig"/>
<bean class="org.springframework.beans.factory.java.ConfigurationPostProcessor"/>
![]()
<bean class="SomeRandomBean">
<property…
</bean>
</beans>
使用通配符来从环境变量中加载类,像这样:
类通过使用(并不加载)ASM来检查,在将来的版本中可能会提供自动检测设定.ApplicationContext oneConfig = new
AnnotationApplicationContext(SimpleConfiguration.class.getName());ApplicationContext aBunchOfConfigs = new
AnnotationApplicationContext("**/configuration/*Configuration.class");
该实现并不需要对Spring Core进行任何的修改,IOC容器非常灵活,它将配置对象看作一个factory bean并且每个bean定义那个对象的一个实例工厂方法来支持.这种机制从Spring 1.1就可用,在配置实例上没有一点字节码处理,目前使用CGLIB来确保对singleton范围@Bean方法的重复调用总是返回同样的对象.
