Spring--装配Bean
来源:互联网 发布:rmvb转mp4 mac 编辑:程序博客网 时间:2024/06/14 18:39
Spring容器负责创建应用程序中的Bean并通过DI来协调这些对象之间的关系。当描述bean如何进行装配时,Spring具有非常大的灵活性,它提供了三种主要的装配机制: 1.在XML中进行显式配置; 2.在Java中进行显式配置; 3.隐式的bean发现机制和自动装配。
自动化装配bean
Spring从两个角度来实现自动化装配:
1.组件扫描:Spring会自动发现应用上下文中所创建的bean。
2.自动装配:Spring自动满足bean之间的依赖。
为了阐述组件扫描和自动装配,我们需要创建几个bean。
## 组件扫描 ##
package DIsystem;public interface CompactDisc { void play();}
实现CompactDisc接口的类,其SgtPeppers类上使用了@Component注解。这个简单的注解会告知该类会作为组件类,并告知Spring会为此类创建Bean。
package DIsystem;import org.springframework.stereotype.Component;@Componentpublic class SgtPeppers implements CompactDisc { private String playing = "Bang"; private String artist = "bigbang"; @Override public void play() { System.out.println("Playing:" + playing + " by " + artist); }}
不过,组件扫描默认是不启动的。我们还需显式配置一下Spring,从而让它去寻找带有@Component注解的类,并为其创建bean。
package DIsystem;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ComponentScanpublic class DIPlayerConfig { /*定义了Spring的装配规则*/}
@ComponentScan默认会扫描与配置类相同的包,查找带有@Component注解的类。这样的话就发现CompactDisc 。并且会在Spring中自动创建一个Bean。## 通过为Bean添加注解实现自动装配 ##自动装配就是让Spring自动满足bean依赖的一种方法,在满足依赖的过程中,会在Spring上下文中寻找匹配某个bean需求的其他bean。为了声明要进行自动装配,我们可以借助Spring的@Autowired注解。
package DIsystem;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;@Componentpublic class DIPlayer implements MediaPlayer{ private CompactDisc di; @Autowired public DIPlayer(CompactDisc di) { this.di = di; } public void play() { di.play(); }}
@Autowired注解不仅能够用在构造器上,还能用在类的任何方法上。如果没有匹配的bean,那么在应用上下文创建的时候,Spring会抛出一个异常。为了避免异常的出现,可以将@Autowired的required属性设置为false,将required属性设置为false时,Spring会尝试执行自动装配,但是如果没有匹配的bean的话,Spring将会处于未装配的状态。
@Autowired(required=false) public DIPlayer(CompactDisc di) { this.di = di; }
通过Java代码装配bean
如果你想将第三方库中的组件装配到你的应用中,在这种情况下,是没有办法在它的类上添加@Component和@Autowired注解的,因此就不能使用自动化装配的方案了,这时,你就必须采用显式装配的方式。在进行显式配置的时候,有两种可选方案:Java和XML。## 用JavaConfig进行装配 ##
package DIsystem;import org.springframework.context.annotation.Configuration;@Configurationpublic class DIPlayerConfig {}
创建JavaConfig类的关键在于为其添加@Configuration注解,@Configuration表明这个类是一个配置类,该类应该包含在Spring应用上下文中如何创建Bean的细节。
package DIsystem;@Beanpublic CompactDisc SgtPeppers { return new SgtPeppers();}
@Bean注解会告诉Spring这个方法将会返回一个对象,该对象要注册为Spring应用上下文中的Bean。方法体中包含了最终产生bean实例的逻辑。默认情况下,bean的ID与带有@Bean注解的方法名一样的。如果想设置成一个不同名字的话,可以通过name属性指定一个不同的名字。
通过XML装配bean
在使用JavaConfig的时候,这意味着要创建一个带有@Configuration注解的类,而在XML配置中,这意味着要创建一个XML文件,并且要以<beans>元素为根。<bean>元素类似于JavaConfig中的@Bean注解。我们可以按照如下方式声明CompactDisc bean:
<bean class="DIsystem.SgtPeppers" />
因为没有明确给定ID,所以这个bean将会根据全限定类名来进行命名。也可以设置属性id。
在XMl中声明DI时,会有多种可选的配置方案和风格。具体到构造器注入,有两种基本的配置方案可供选择:
1.元素。
2.使用Spring3.0引入的c-命名空间。
两者的区别在很大程度上就是是否冗长烦琐。
阅读全文
0 0
- Spring Bean装配-自动装配
- spring 基本Bean装配
- Spring Bean 初级装配
- Spring Bean 高级装配
- Spring中装配bean
- Spring bean装配
- spring装配bean
- Spring笔记---装配Bean
- Spring 装配Bean
- Spring配置文件 装配Bean
- Spring-Bean的装配
- Spring之装配Bean
- Spring装配bean
- Spring Bean装配-resouce
- spring(2)装配Bean
- Spring学习-装配Bean
- spring装配Bean
- spring IOC装配bean
- jenkins
- 浅谈list的remove方法
- memcache
- 牛客练习赛8解题报告
- jsp登录页面
- Spring--装配Bean
- 【Python数据分析与展示】(七)数据加载存储和文件格式
- [RK3399][Android7.1] 调试笔记 --- 默认板子无法亮屏
- AnimatorSet 动画集合以及它的监听事件
- 《Java编程技巧1001条》360条:用日期函数获得当前日期
- ACRUSH 楼教主的回忆录
- jQuery 遍历
- IIS 中设置文件上传最大长度
- 丛林战争项目十之数据库查询