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:
- bean:通过该属性引用同一个容器或者父容器的bean。
- local:通过该属性引用同一个配置文件中的bean,并且可以发现和纠正错误的配置。
- 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();