Spring3.0学习之bean的配置方式

spring3.0中配置bean的方式有三种:

1、XML配置

  • 属性配置注意事项
    在配置类的属性时,通常用property标签。但是,我们需要注意的一点是,在通过属性注入时,必须提供默认的构造函数。如果没用提供默认的构造函数的话,就会抛出异常。
  • JavaBean中关于属性命名的特殊规范
    通常,类中的属性都是以小写开头。但有时会碰到有特殊意义的属性名称,它们需要以大写开头,例如USA,XML等。JavaBean也允许以大写开头的属性,不过必须满足“开头的两个字母要不全都大写,要不全都小写”。例如:brand,IDCard,IC都是符合规范的,IdCard这样的就是非法的。正确的属性书写规范,可避免不需要的配置异常。
  • 引用其他Bean
    引用其他Bean,需要使用ref标签。例如:
<bean id="car" class="com.zj.Car"/>
<bean id="boss" class="com.zj.Boss">
    <ref bean="car"/>
</bean>

ref可以通过以下三个属性引用其他Bean:

  1. bean:通过该属性引用同一个容器或者父容器的bean。
  2. local:通过该属性引用同一个配置文件中的bean,并且可以发现和纠正错误的配置。
  3. parent:通过该属性引用父容器中bean。

基于注解的配置

  • Spring容器成功启动的三大要件分别是:Bean定义信息、Bean实现类以及Spring本身。如果采用基于XML的配置,Bean定义信息和Bean实现类本身是分离的,而采用基于注解的配置文件时,Bean定义信息即通过在Bean实现类上标注注解实现。
  • 除了@Component以外,Spring提供了3个功能和@Component等效的注解,它们分别用于对DAO、Service、及Web的Controller进行注解,所以也称这些为注解了Bean的衍型steretype注解:
    @Repository:用于对DAO实现类进行标注;
    @Service:用于对Service实现类进行标注;
    @Controller:用于对Controller实现类进行标注;
    之所以要在@Component之外提供这三个特殊的注解,是为了让标注类本身的用途清晰化,你完全可以用@Component替代这三个特殊的注解。但是,我们推荐你使用特定的注解标注特定的Bean。Spring在后续版本中可能会分为对这三个特殊的注解功能进行增强。

基于java类的配置

  • JavaConfig是Spring的一个子项目,它旨在通过Java类的方式提供Bean的定义信息。
  • 普通的POJO只要标注@Configuration注解,就可以为Spring容器提供Bean定义的信息了,每个标注了@Bean的类方法都相当于提供一个Bean的定义信息。
  • 由于@Configuration注解类本身已经标注了@Component注解,所以任何标注了@Configuration的类,本身也相当于标注了@Component,即他们可以像普通的Bean一样被注入到其他Bean中。

使用基于Java类的配置信息启动Spring容器

  • Spring提供了一个AnnotationConfigApplicationContext类,它能够直接通过标注@Configuration的Java类启动Spring容器。
ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConf.class);

此外,AnnotationConfigApplicationContext还支持通过编码的方式加载多个@Configuration配置类,然后通过刷新容器应用这些配置类。

ApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.register(DaoConfig.class);
ctx.register(ServiceConfig.class);
ctx.refresh();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值