对于spring实现bean信息定义目标-基于三种方法的思考

对于spring实现bean信息定义目标,spring提供了三种方式: 基于XML 基于注解 ,以及 基于java类

本人是使用的基于注解的形式比较多的,一直没有使用过基于xml和基于java类的,因此不少地方仍是不会的: java

经过资料,比较了三种方式的在不一样环境的优劣 spring

  • 对于xml文件的: 
  1. 适合于bean实现类来源于第三方类库,如DataSource , JdbcTemplate等,由于如法在类中标注注解,全部经过xml文件进行注解是比较适合的一种方式。
  2. 另外,命名空间的配置,如aop context 等 只能基于xml配置,,,,
  • 对于注解的配置: 
  1. bean的实现类就在当前项目开发中,能够直接在java类中使用基于注解的配置


  • 对于java类的配置:  
  1. 基于Java类配置的优点在于能够经过代码方式控制bean初始化的整个逻辑,全部若是实例化bean的逻辑比较复杂,则比较适合使用基于Java类配置的方式。。。。。。。

对于三种形式的比较

  • 对于bean的定义
  1. 基于xml: 在xml文件中经过<bean>元素定义bean   例如  <bean class="com.boss.test"/>
  2. 基于注解:经过注解 @Compoent 或者衍型类(@Repository,@Service 以及 @Controller)定义bean 
  3. 基于java类配置:因为使用状况很少,就不作介绍了。。。。。。
  • 对于bean的名称
  1. 基于XML 经过<bean> 的id或者name属性定义
  2. 基于注解: 经过注解的value属性
  • 对于bean的注入 
  1. 基于XML  经过<property>子元素或者经过p命名空间的动态属性  p:userDao-ref="userDao"
  2. 基于注解:  经过@Autowired
  • 对于bean生命过程方法
  1. 基于xml  init-method  和  destroy-method 属性指定bean实现类的方法名,最多只能指定一个初始化方法和一个销毁方法。
  2. 基于注解: 经过@PostConstruct 和 @PreDestroy 注解来指定初始化或者销毁方法。 能够定义任意多个方法。
  • 对于bean做用范围
  1. 基于XML   scope属性
  2. 基于注解:  @Scope("")
  • 对于bean延迟初始化
  1. 基于XML 经过lazy-init 属性指定,默认是default  继承于beans的default-lazy-init设置,该值默认为false
  2. 基于注解  @Lazy
相关文章
相关标签/搜索