Spring实战(第四版)读书笔记——第二章 装配Bean

如果有人看的话,劳烦各位不吝指出不足之处,谢谢!

创建应用对象之间协作关系的行为通常称为装配( wiring ),这也是依赖注入( DI )的本质。

2.1 Spring配置的可选方案

1.在 XML 中进行显式配置。

2.在 Java 中进行显式配置。

3.隐式的 bean 发现机制和自动装配。

尽可能地使用自动配置的机制。显式配置越少越好。当你必须要显式配置 bean 的时候,推荐使用类型安全并且比 XML 更加强大的 JavaConfig 。最后,只有当你想要使用便利的 XML命名空间,并且在 JavaConfig 中没有同样的实现时,才应该使用 XML 。

2.2 自动化装配Bean

@ComponentScan("package_name1", "package_name2") 在指定包中搜索并自动配置bean组件,多个包名用逗号隔开,也可以不指定包名,默认扫描配置类所在包。

@ComponentScan(ClassType1, ClassType2) 在指定类类型所在包中搜索并自动配置bean组件,多个类类型用逗号隔开,也可以不指定,默认扫描配置类所在包。

@Component("name") 将类定义为组件并命名,可以不命名,默认组件id为将类名第一个字母改为小写。

@Named("name") 大多数情况下与@Component("name")相同,注解来源于 Java 依赖注入规范。

 @Autowired 实现自动装配,尽可能满足依赖。

@Inject 大多数情况下与@Autowired 相同注解来源于 Java 依赖注入规范。

2.3 通过Java代码装配bean

@Configuration 将类定义为Spring配置类

@ContextConfiguration(classes=ClassType) 指定使用的配置类以在运行时加载配置。

@Bean(name="changedName") 告诉 Spring 这个方法将会返回一个对象,该对象要注册为 Spring 应用上下文中的 bean 。设置name值为更改后的bean名字。

2.4 通过 XML 装配 bean

2.4.1 创建XML配置规范

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

2.4.2 声明一个简单的 <bean>

<bean class="ClassPath"/> 默认id为classPath#0,#后面数字表示相同类名排序,注意,id为第一个字母小写后的包名加类名。

<bean id="id" class="ClassPath"/> 指定id的bean,方便其他bean引用。

为了减少 XML 中繁琐的配置,只对那些需要按名字引用的 bean (比如,你需要将对它的引用注入到另外一个 bean 中)进行明确地命名。

2.4.3 借助构造器注入初始化 bean

<bean id="id" class="ClassPath">
<constructor-arg ref="beanId"/> 指定要引用的bean的id

</bean>

或者使用c命名空间,首先在XML顶部声明

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:c="http://www.springframework.org/schema/c"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>

<bean id="cdPlayer" class="soundSystem.CDPlayer" c:cd-ref="compactDisc"/>


构造器参数名可以替换为下划线开头的数字,如:_0,表示第一个参数,_1,表示第二个参数

或者只写一个下划线,代表不标识参数,如:c:_-ref,要求构造器只yaoqiu一个参数

目前,使用 c- 命名空间的属性无法实现装配集合的功能。但可以使用util-命名空间实现这个功能。新建util-list然后引用即可如:


2.4.4 设置属性

对强依赖使用构造器注入,而对可选性的依赖使用属性注入。

<property name="compactDisc" ref="compactDisc"></property> 写在bean标签里,name是必须的,并应该与类中属性同名。

或者使用p命名空间,在XML顶部声明

xmlns:p="http://www.springframework.org/schema/p"

Bean即可声明为:

<bean id="cdPlayer" class="soundSystem.CDPlayer" p:cd-ref="compactDisc"/>


2.5 导入和混合配置

2.5.1 在 JavaConfig 配置中引用

@Import({ClassType1,ClassType2}) 引入另一个配置文件,可以将过长的配置文件分开写,然后用这个注解整合。

@ImportResource("xmlName") 值为字符串,xml文件路径,引入xml配置文件

2.5.2 在 XML 配置中引用

<import resource="xmlName" /> 引入xml配置文件,值为配置文件名

<bean class="ClassName" /> 引入javaConfig配置,值为包名加类名

<context:component-scan> 配置xml文件自动装配bean

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值