Spring MVC学习笔记(二)

第2章 装配bean
1,创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入的本质。
在spring中,对象无需之间查找或创建与其所关联的其他对象。相反,容器负责把需要相互协作的对象引用赋予各个对象。

2,Spring三种主要的装配机制:
在XML中进行显示配置;
在java中进行显示配置;
隐式的bean发现机制和自动装配。
3,Spring从两个角度来实现自动化装配:
组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean
自动装配(autowiring):Spring自动满足bean之间的依赖。

4,@Component:表明该类会作为组件类,并告知Spring要为这个类创建bean。  @Component("lonelyHeartsClub")或@Named("lonelyHeartsClub")修改组件的ID
@ComponentScan:启动组件扫描(默认不启用),显示配置Spring,命令它去寻找带有@Component注解的类,并为其创建bean.默认扫描与配置类相同的包。
@Component(@basePackages="soundsystem"):修改扫描的基础包名称
@Component(@basePackages={"soundsystem","video"}):修改扫描的基础包名称
@Component(@basePackagesClasses={CDPlayer.class,DVDPLayer.class})

@Configuration
@Component
public class CDPlayerConfig{
}
使用XML启动组件扫描:Spring context命名空间的<context:component-scan base-package="soundsystem">


@AutoWired(required=false):可以用在类的任何方法上。如果没有匹配的bean,那么在应用上下文创建的时候,SPring会抛出一个异常,设定为false可以避免异常的出现。
@AutoWired
public void insertDisc(ComponentDisc cd) {
    this.cd = cd;
}

5,java代码显示装配bean
JavaConfig是配置代码,不应该包含任何业务逻辑,也不应该侵入到业务逻辑代码之中。
@Bean(name="lonelyHeartsClubBand")//告诉Spring这个方法会返回一个对象,该对象要注册为Spring应用上下文中的bean.方法体中包含最终产生bean实例的逻辑。默认bean的ID与带有@Bean注解的方法名是一样的。可以通过name属性指定一个不同的名字。
public ComponentDisc sgtPeppers() {
    return new SgtPeppers();
}
    
@Bean//带有依赖的注入,
public CDPlayer cdPlayer(){
    return new CDPlayer(sgtPeppers());
}
因为sgtPeppers()方法上添加了@Bean注解,Spring将会拦截所有对它的调用,并确保返回该方法所创建的bean,而不是每次都对其进行实际的调用。

6,XML装配bean
创建XML配置规范
一个以<beans>元素为根的XML文件。
配置文件的顶部声明多个XML模式(XSD)文件。
<bean id="compactDisc" class="soundsystem.SgtPeppers"/> 没有明确给定ID时,会根据全限定类名来进行命名,将会是“soundsystem.SgtPeppers#0"
构造器注入初始化bean
<constructor-arg>
c-命名空间
<bean id="cdPlayer" class="soundsystem.CDPlayer">
<constructor-arg ref="compactDisc"> /<c:cd-ref="compactDisc">(P51-52)
</bean>当Spring遇到这个<bean>元素时,它会创建一个CDPlayer实例。<constructor-arg>元素会告知Spring要将一个ID为compactDisc的bean引用传递到CDPlayer的构造器中。
属性注入
<bean id="cdPlayer" class="soundsystem.CDPlayer">
<property name="compactDisc" ref="compactDisc"> /<p:compatDisc-ref="compactDisc">  <property>元素/p命名空间为属性的setter方法所提供的功能与<constructor-arg>元素为构造器所提供的功能是一样的。
</bean>
util命名空间:
<util:list>创建一个列表的bean。

7,JavaConfig中引入其他Java或XML配置的Config
@Import(SDConfig.class)
@ImportResource(classpath:cd-config.xml")
XML配置中引入其他配置
<import resource="cd-config.xml">
<bean class="soundsystem.CDConfig">

8,创建一个根配置,将其他的配置类或XML组合起来,在根配置中启用组件扫描(通过<context:component-scan>或@ComponentScan).
Spring框架的核心是Spring容器。容器负责管理应用中组件的生命周期,它会创建这些组件并保证他们的依赖能够得到满足,这样的话,组件才能完成预定的任务。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值