欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaSpring Bean的装配方式

程序员文章站 2024-02-15 11:56:52
...

Spring支持三种形式的Bean的装配方式,分别基于XML的装配、基于注解的装配和自动装配。

xml装配
JavaSpring Bean的装配方式
当使用无参构造方法时,必须要有set方法,且在xml文件当中使用<property>标签给定值。使用有参的构造函数在配置文件中使用<constructor-arg>标签
如下代码所示:使用不同的标签装配bean。分别是对应java代码当中是否有带参数的构造函数。

<bean id="teacher" class="com.lzq.spring.model.teacher">
		<constructor-arg index="0" value="01"></constructor-arg>
		<constructor-arg index="1" value="岳云"></constructor-arg>
		<constructor-arg index="2" value="45"></constructor-arg>
	</bean>

	<bean id="Person" class="com.lzq.spring.model.Person">
		<property name="name" value="月月鸟"></property>
		<property name="age" value="18"></property>
	</bean>

如下图所示,在teacher类和person类当中,对变量进行封装的方法,一个是无参构造函数(或者是无构造函数)使用set方法,有参的直接this.变量获取
JavaSpring Bean的装配方式
基于注解的装配
基于XML的装配可能会导致XML配置文件过于臃肿,给后续的维护和升级带来一定的困难。为此,Spring提供了对Annotation(注解)技术的全面支持。
主要注释有以下几种:

  • @Component:用于描述Spring中的Bean,它是一个泛化的概念,仅仅表示一个组件。
  • @Repository:用于将数据访问层(DAO)的类标识为Spring中的Bean 。
  • @Service:用于将业务层(Service)的类标识为Spring中的Bean。
  • @Controller:用于将控制层(Controller)的类标识为Spring中的Bean 。
  • @Autowired:用于对Bean的属性变量、属性的setter方法及构造方法进行标注,配合对-应的注解处理器完成Bean的自动配置工作。
  • @Resource:其作用与Autowired一样。@Resource中有两个重要属性:name和type。Spring将name属性解析为Bean实例名称,type属性解析为Bean实例类型。
  • @Qualifier:与@Autowired注解配合使用,会将默认的按Bean类型装配修改为按Bean的实例名称装配,Bean的实例名称由@Qualifier注解的参数指定。

除了可以像示例中通过元素来配置Bean外,还可以通过包扫描的形式来配置一个包下的所有Bean:

<context:component-scan base-package="com.itheima.annotation" />

自动装配
就是将一个Bean自动的注入到到其他Bean的Property中。 Spring的元素中包含一个autowire属性,我们可以通过设置autowire的属性值来自动装配Bean。autowire属性有5个值,其值及说明下表所示:
JavaSpring Bean的装配方式
使用自动装配的步骤:

  • 修改上一节UserServiceImple和UserController,分别增加类属性的setter方法;
  • 修改Spring配置文件,使用autowire属性配置Bean;
  • 最后重新测试程序。