Spring中装配bean的三种主要方式
2017-02-22 16:07
337 查看
1、隐式的bean发现机制和自动化装配
组件扫描( component scanning) : Spring会自动发现应用上下文中所创建的bean。
自动装配( autowiring) : Spring自动满足bean之间的依赖。
组件扫描默认是不启用的,可以通过在xml中配置 元素或者使用@ComponentScan注解来启动扫描。Spring会扫描使用注解的类
例@Component
自动装配就是让Spring自动满足bean依赖的一种方法, 在满足依赖的过程中, 会在Spring应用上下文中寻找匹配某个bean需求的其他bean。 为了声明要进行自动装配, 我们可以借助Spring的@Autowired注解。
@Autowired注解不管是构造器、 Setter方法还是其他的方法, Spring都会尝试满足方法参数上所声明的依赖。 假如有且只有一个bean匹配依赖需求的话, 那么这个bean将会被装配进来。
2、基于Java的显式配置
在进行显式配置时, JavaConfig是更好的方案,因为它更为强大、 类型安全并且对重构友好。 因为它就是Java代码,就像应用程序中的其他Java代码一样。同时, JavaConfig与其他的Java代码又有所区别, 在概念上, 它与应用程序中的业务逻辑和领域代码是不同的。尽管它与其他的组件一样都使用相同的语言进行表述, 但JavaConfig是配置代码。尽管不是必须的, 但通常会将JavaConfig放到单独的包中, 使它与其他的应用程序逻辑分离开来。
创建JavaConfig类的关键在于为其添加@Configuration注解, @Configuration注解表明这个类是一个配置类, 该类应该包含在Spring应用上下文中如何创建bean的细节。要在JavaConfig中声明bean, 我们需要编写一个方法, 这个方法会创建所需类型的实例, 然后给这个方法添加@Bean注解。@Bean注解会告诉Spring这个方法将会返回一个对象, 该对象要注册为Spring应用上下文中的bean。 方法体中包含了最终产生bean实例的逻辑。
借助JavaConfig实现注入
构造方法:
通过setter方法注入
3、基于XML的显式配置
1、创建XML配置规范
在使用XML为Spring装配bean之前, 你需要创建一个新的配置规范。在使用JavaConfig的时候, 这意味着要创建一个带有@Configuration注解的类, 而在XML配置中, 这意味着要创建一个XML文件, 并且要以元素为根。
声明一个bean
构造器注入方式配置
setter属性方式注入
以上这些配置方案都不是互斥的,我们可能会同时使用自动化和显式配置,根据自身的需求进行选择即可。
组件扫描( component scanning) : Spring会自动发现应用上下文中所创建的bean。
自动装配( autowiring) : Spring自动满足bean之间的依赖。
组件扫描默认是不启用的,可以通过在xml中配置 元素或者使用@ComponentScan注解来启动扫描。Spring会扫描使用注解的类
例@Component
import org.springframework.stereotype.Component; @Component public class SgtPeppers implements CompactDisc { private String title = "Sgt. Pepper's Lonely Hearts Club Band"; private String artist = "The Beatles"; public void play() { System.out.println("Playing " + title + " by " + artist); } }
自动装配就是让Spring自动满足bean依赖的一种方法, 在满足依赖的过程中, 会在Spring应用上下文中寻找匹配某个bean需求的其他bean。 为了声明要进行自动装配, 我们可以借助Spring的@Autowired注解。
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class CDPlayer implements MediaPlayer { private CompactDisc cd; @Autowired public CDPlayer(CompactDisc cd) { this.cd = cd; } public void play() { cd.play(); } }
@Autowired注解不管是构造器、 Setter方法还是其他的方法, Spring都会尝试满足方法参数上所声明的依赖。 假如有且只有一个bean匹配依赖需求的话, 那么这个bean将会被装配进来。
2、基于Java的显式配置
在进行显式配置时, JavaConfig是更好的方案,因为它更为强大、 类型安全并且对重构友好。 因为它就是Java代码,就像应用程序中的其他Java代码一样。同时, JavaConfig与其他的Java代码又有所区别, 在概念上, 它与应用程序中的业务逻辑和领域代码是不同的。尽管它与其他的组件一样都使用相同的语言进行表述, 但JavaConfig是配置代码。尽管不是必须的, 但通常会将JavaConfig放到单独的包中, 使它与其他的应用程序逻辑分离开来。
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class CDPlayerConfig { @Bean public CompactDisc compactDisc() { return new SgtPeppers(); } @Bean public CDPlayer cdPlayer(CompactDisc compactDisc) { return new CDPlayer(compactDisc); } }
创建JavaConfig类的关键在于为其添加@Configuration注解, @Configuration注解表明这个类是一个配置类, 该类应该包含在Spring应用上下文中如何创建bean的细节。要在JavaConfig中声明bean, 我们需要编写一个方法, 这个方法会创建所需类型的实例, 然后给这个方法添加@Bean注解。@Bean注解会告诉Spring这个方法将会返回一个对象, 该对象要注册为Spring应用上下文中的bean。 方法体中包含了最终产生bean实例的逻辑。
借助JavaConfig实现注入
构造方法:
@Bean public CDPlayer cdPlayer(CompactDisc compactDisc) { return new CDPlayer(compactDisc); }
通过setter方法注入
@Bean public CDPlayer cdPlayer(CompactDisc compactDisc) { CDPlayer cdPlayer = new CDPlayer(compactDisc); cdPlayer.setCompactDisc(compactDisc); return new cdPlayer; }
3、基于XML的显式配置
1、创建XML配置规范
在使用XML为Spring装配bean之前, 你需要创建一个新的配置规范。在使用JavaConfig的时候, 这意味着要创建一个带有@Configuration注解的类, 而在XML配置中, 这意味着要创建一个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" xmlns:c="http://www.springframework.org/schema/c" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> </beans>
声明一个bean
<bean id="compactDisc" class="soundsystem.BlankDisc">
构造器注入方式配置
<bean id="cdPlayer" class="soundsystem.CDPlayer"> <constructor-arg ref="compactDisc" /> </bean>
setter属性方式注入
<bean id="cdPlayer" class="soundsystem.properties.CDPlayer"> <property name="compactDisc" ref="compactDisc" /> </bean>
以上这些配置方案都不是互斥的,我们可能会同时使用自动化和显式配置,根据自身的需求进行选择即可。
相关文章推荐
- Spring中装配bean的三种主要方式
- 【spring】1、三种装配bean的方式
- Spring的自动装配Bean的三种方式
- Spring装配bean的三种方式
- Spring学习(17)--- 三种装配Bean方式比较
- Spring的三种装配Bean的方式
- spring4笔记----使用装配注入合作者Bean的三种方式
- Spring学习(四)-Bean的三种装配方式
- Spring的自动装配Bean的三种方式
- spring对于bean的javaconfig,xml,自动装配三种装配方式实现
- spring装配bean的三种方式
- Spring的自动装配Bean的三种方式
- (2)Spring的三种实例 bean 的方式 以及 Spring中bean的作用域。 以及 bean的生命周期
- Java乔晓松-spring自动装配Bean的4种方式
- spring三种实例化bean的方式
- Spring中的Bean实现的创建三种方式
- 11级_Java_曹建波 05.06 Spring的autowire自动装配bean的四种方式
- spring三种实例化bean的方式
- spring三种实例化Bean的方式和管理Bean的作用域和Bean的生命周期
- spring实例化bean的三种方式