【SSM - Spring】02 装配 Spring Bean

2.1 依赖注入的三种方式

在实际环境中,实现 IoC 容器有两种方式:

  • 依赖查找:通过资源定位,把对应的资源查找回来
  • 依赖注入:程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入。

依赖注入有三种方式:

  • 构造器注入
  • setter 注入
  • 接口注入

2.1.1 构造器注入

构造器注入依赖于构造方法实现,可以是有参构造也可以是无参构造。

Spring 根据对应的配置信息通过反射的形式创建对象。

<bean id = "role" class="com.yyh.ssm.Role">
	<constructor-arg index="0" value="总经理" />
    <constructor-arg index="1" value="公司管理者" />
</bean>

index:构造方法中参数的位置
value: 对应参数的值

2.1.2 setter 注入

setter 注入是 Spring 最主流的注入方式。

使用 setter 注入,我们不需要再写构造方法,通过 setter 注入为其设置对应的值

<bean id="role" class="com.yyh.ssm.Role">
	<property name="roleName" value="高级工程师"/>
	<property name="note" value="重要人员 />
</bean>

Spring 会通过反射调用没有参数的构造方法生成对象,同时通过反射对应的 setter 注入配置的值。

2.1.3 接口注入

我们经常使用接口来将调用者与实现者分离。

根据预先在配置文件中的设定,动态加载实现类。

2.2 装配 Bean 的概述

将 Bean 装配到 Spring IoC 容器中有三种方式:

  • 在 XML 中显示配置
  • 在 Java 的接口和类中实现配置
  • 隐式 Bean 的发现机制和自动装配原则

2.2.1 通过 XML 装配 Bean

  1. 装配简单的值
<baen id="role" class=”com.yyh.ssm.Role">
	<property name="roleName" value="老师"/>
	<property name="user" ref="user"/>
</bean>
  • id: Spring 找到这个 Bean 的编号,默认值是 “全限定名#{number}”, 第一次创建 #{number} 为 0,一次增加。
  • class: 类的全限定名
  • preperty: 定义类的属性
  • ref: 可以引用对应的 Bean
  1. 装配集合

List:

<baen id="role" class=”com.yyh.ssm.Role">
	<property name="list">
		<list>
			<value>1</value>
			<value>1</value>
		</list>
	</property>
</bean>

Map:

<baen id="role" class=”com.yyh.ssm.Role">
	<property name="map">
		<map>
			<entry key="key1" value="value1"/>
			<enrty key="key2" value="value2"/>
		</map>
	</property>
</bean>

Properties:

<baen id="role" class=”com.yyh.ssm.Role">
	<property name="props">
		<props>
			<prop key="key1" value="value1"/>
			<prop key="key2" value="value2"/>
		</props>
	</property>
</bean>

Set:

<baen id="role" class=”com.yyh.ssm.Role">
	<property name="set">
		<set>
			<value>1</value>
			<value>2</value>
		</set>
	</property>
</bean>

Array:

<baen id="role" class=”com.yyh.ssm.Role">
	<property name="array">
		<array>
			<value>1</value>
			<value>2</value>
		</array>
	</property>
</bean>
  1. 命名空间装配

先引入对应的命名空间和 XML 模式文件。

<beans xmlns:c="http://www.springframework.org/schema/c"
			xmlns:p="http://www.springframeword.org/schema/p">
	<bean id="role1" class="com.yyh.ssm.Role" c:_0="1" c:_1="role_name_1" c:_2="role_note_1"/>
	<bean id="role2" class="com.yyh.ssm.Role" p:id="2" p:roleName="role_name_2" p:roleNote="role_note_2" />
</beans>
  • c:_0 代表构造方法的第 1 个参数, c:_1 代表的是第 2 个,c:_2 代表的是第 3 个
  • p 代表引用属性, p:id:=“2”, 以 2 为值,使用 setId 方法设置。

2.2.2 通过注解装配 Bean

在 Spring 中,它提供了两种方式来让 Spring IoC 容器发现 Bean:

  • 组件扫描:通过定义资源的方式,让 Spring IoC 容器扫描对应的包,从而把 Bean 装配进来。
  • 自动装配:通过注解定义,使得一些依赖关系可以通过注解完成。
  1. 使用 @Component 装配 Bean
@Componet(value = "role")
public class Role {

	@value("1")
	private Long id;
}
  • 注解 @Component 代表 Spring IoC 会把这个类扫描生成 Bean 实例,其中 value 就是这个 Bean 的 id。若不写 value,默认为首字母小写
  • 注解 @Value 代表是注入的值。
  1. 自动装配 @Autowired

猜你喜欢

转载自blog.csdn.net/qq_37581282/article/details/83301096
今日推荐