Spring实战学习1-装配bean
1、spring装配bean的机制
Spring容器负责创建应用程序中的bean并通过DI来协调这些对象的关系。 它提供了三种主要的装配机制: (1)在XML中进行显示配置 (2)在java中进行显示配置[推荐] (3)隐式的bean发现机制和自动装配[强烈推荐]
2、隐式的bean发现机制和自动装配
2.1、自动化装配bean
Spring从两个角度来实现自动化装配
(1)组件扫描:Spring会自动发现应用上下文所创建的bean (2)自动装配:Spring自动满足bean之间的依赖
注解:
@Component:该注解表明该类会作为组件类,并告知Spring要为这个类创建bean
注:组件扫描默认是不开启的,需要显式配置一下
@ComponentScan:在Spring中启用组件扫描,如果没有其他配置的话,该注解默认会扫描与配置类相同的包。
public interface CompactDisc{ void play();} //Spring容器创建bean @Component public class SgtPeppers implements CompactDisc { private String title = "Sgt.Pepper"; private String artist = "The Beatles"; @Override public void play() { // TODO Auto-generated method stub System.out.println("title:"+title+"artist:"+artist); } } //启动component扫描 @Configuration @ComponentScan public class CDPlayerConfig { }
2.2为组件扫描的bean命名
Spring应用上下文中所有的bean都会给定一个ID,默认ID为类名的第一个字母变成小写。
如果想要设置不同的ID,需要将期望的ID作为值传递给@Component注解。
@Component("myLoveCd") public class SgtPeppers implements CompactDisc { }
还有另外一种bean命名方式,使用java依赖注入中所提到的@Named注解来设置bean的ID
@Named("myLoveCd") public class SgtPeppers implements CompactDisc { }
推荐使用@Component
2.3设置组件扫描的基础包
@Configuration @ComponentScan("spring") public class CDPlayerConfig { }
清晰的说明你设置的是基础包,通过basePackages属性进行配置,当然也可以这是多个包
@Configuration @ComponentScan(basePackages = {"spring","hello"}) public class CDPlayerConfig { }
除了包设置为简单的String类型之外,@ComponentScan还提供了另外的方法,将其指定为包中所包含的类或接口
@Configuration //@ComponentScan(basePackages = {"spring","hello"}) @ComponentScan(basePackageClasses= {CDPlayer.class,DVDPlayer.class}) public class CDPlayerConfig { }
3、通过java代码装配bean
3.1创建配置类
@Configuration public class CDPlayerConfig { }
创建JavaConfig类的关键在于为其添加@Configuration注解,该注解表明这个类是一个配置类,该类应该包含在Spring应用上下文中如何创建bean的细节。
3.2声明简单的bean
在JavaConfig声明bean,编写一个方法,然后给这个方法添加@Bean注解
@Bean(name="sgt") public CompactDisc sgtPeppers() { return new SgtPeppers(); }
@Bean注解会告诉Spring这个方法会返回一个对象,该对象要注册为Spring应用上下文中的bean。
默认情况下,bean的ID与带有@Bean注解的方法名是一样的。也可以重命名该方法,通过name属性指定一个不同的名字
3.3借助JavaConfig实现注入
在JavaConfig中装配bean的最简单的方法就是引用创建bean的方法
@Bean public CDPlayer cdPlayer() { return new CDPlayer(sgtPeppers()); } //或者 @Bean public CDPlayer cdPlayer(CompactDisc sgtPeppers) { return new CDPlayer(sgtPeppers); }
使用Setter方法实现注入
@Bean public CDPlayer cdPlayer2(CompactDisc cd) { CDPlayer cdPlayer = new CDPlayer(cd); cdPlayer.setCd(cd); return cdPlayer; }
4、在JavaConfig中引用XML配置
详情见:http://yuedu.163.com/book_reader/247cb8bba21a4b6c8ec4efd8e28c0311_4
最为简单的Spring 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>
用来装配bean的最基本的XML元素包含在spring-北安市模式之中,在上面这个XML文件中,它被定义为根命名空间。是该模式中的一个元素,它是所有Spring配置文件的根元素。
4.1、声明一个简单的
<bean class="com.example.demo.spring.CDPlayer"> </bean>
这里声明一个简单的bean,创建这个bean的类通过class属性来指定,并且使用全限定类名
可以借助id属性,为每隔bean设置一个自己定义的名字:
<bean id = "cdPlayer" class="com.example.demo.spring.CDPlayer"> </bean>
4.2借助构造器注入初始化bean
两种方式实现构造器的注入bean
//第一种 <bean id = "cd" class = "com.example.demo.spring.SgtPeppers"/> <bean id = "cdPlayer" class="com.example.demo.spring.CDPlayer"> <constructor-arg ref="cd"></constructor-arg> </bean> //第二种 <bean 4000 id = "cd" class = "com.example.demo.spring.SgtPeppers"/> <bean id = "cdPlayer" class="com.example.demo.spring.CDPlayer" c:cd-ref="cd" />
4.3、设置属性
<bean id = "cd" class = "com.example.demo.spring.SgtPeppers"/> <bean id = "cdPlayer" class="com.example.demo.spring.CDPlayer"> <constructor-arg ref="cd"></constructor-arg> <property name="cd" ref = "cd"></property> </bean>
元素为属性Setter方法多提供的功能与元素为构造器所提供的功能是一样的
总结:
Spring框架的核心是Spring容器。容器负责管理应用中组件的生命周期,它会创建这些组件并保证它们的依赖能够得到满足。在Spring中,这些配置方案不是互斥的,可以混合使用。
- 学习《spring 3.x企业应用开发实战》之在IoC容器中装配Bean
- [学习笔记]spring实战-装配Bean
- spring实战-声明,装配Bean(一)
- spring实战4 (2)装配bean
- 一点一滴学习Spring(二)之装配bean简单方式
- Spring----学习(2)----XML 配置Bean 自动装配
- Spring学习笔记(六) --- 装配Bean之高级装配
- Spring入门学习——用@Autowired和@Resource自动装配Bean
- 【Spring学习15】自动装配Bean
- Spring学习笔记(11.Spring Bean装配注释)
- Spring学习之Bean的装配
- Spring实战笔记——装配Bean
- Spring学习笔记之通过XML装配Bean的一些细节
- Spring学习-06:IOC容器装配Bean(xml配置方式)详解
- Spring学习之Bean的自动装配(非注解)
- 一点一滴学习Spring(三)之bean高级装配
- Spring学习笔记—Spring之旅 . -----装配Bean
- Spring核心Bean工厂装配__Spring学习笔记
- Spring4 实战笔记(1):装配bean—依赖注入的本质
- spring实战-显式装配bean