Spring 之自动化装配 bean 尝试
【Spring之自动化装配bean尝试】
1、添加dependencies如下所示(不是每一个都用得到
- <dependencies>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>4.3.9.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>4.3.5.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>4.3.7.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- <version>4.3.9.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- </dependency>
- </dependencies>
2、创建可以被发现的“ bean ”
首先定义CD的概念
- package soundsystem;
- public interface CompactDisc {
- void play();
- }
创建带有 @Component 注解的实现类
- package soundsystem;
- import org.springframework.stereotype.*;
- @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);
- }
- }
@Component 注解的作用
- 表明该类会作为组件类
- 告知 Spring 要为这个类创建 bean
3、声明组件扫描,下面这个类与 CD 实现类在同一个包下。
- package soundsystem;
- import org.springframework.context.annotation.ComponentScan;
- import org.springframework.context.annotation.Configuration;
- @Configuration
- @ComponentScan
- public class CDplayerConfig {
- }
注解 1 @Configuration 告知 Spring的应用上下文 要在该类中加载配置
注解 2 @ComponentScan 告知 Spring的应用上下文 要启用组件扫描,默认扫描与配置类相同的包
4、测试自动化装配 bean
- package soundsystem;
- import static org.junit.Assert.*;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.test.context.ContextConfiguration;
- import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration(classes = CDplayerConfig.class)
- public class CDPlayerTest {
- @Autowired
- private CompactDisc cd;
- @Test
- public void cdShouldNotBeNull() {
- assertNotNull(cd);
- }
- }
- @RunWith 创建 Spring的应用上下文
- @ContextConfiguration 加载配置 --> 启用组件扫描 --> 扫描组件,发现带 @Component 注解的 CD实现类 --> 自动创建 bean
- @Autowired 将 CD实现类 对象 注入到测试代码中
5、自动装配 bean 的数量是不限的
- public class CDPlayerTest {
- @Autowired
- private CompactDisc cd;
- @Autowired
- private CompactDisc cd2;
- @Autowired
- private CompactDisc cd3;
- @Autowired
- .........
- @Autowired
- private CompactDisc cdn;
- @Test
- public void cdShouldNotBeNull() {
- assertNotNull(cd);
- assertNotNull(cd2);
- }
- }
上述代码有误,无限指的是 只需要一个
- @ComponentScan
注解,就可自动创建无限的bean,这些bean对应于各自不同的类,
扫描产生的bean默认为单例。
【Spring 自动化装配 bean 相关注解 深入探讨】
自动化装配总结起来就是:
创建可用的 bean --> 声明组件扫描 --> 启用配置,声明自动装配
这中间还有一些可做的(可自定义)的事情,
例如说,为组件扫描的 bean 命名、设置组件扫描的基础包(定义扫描范围),
为各种东西(构造器、方法)添加 @Autowired 注解(该注解有个required属性,
自动装配的缺陷在于有多个匹配的 bean 时将产生歧义(来自《Spring in Action》。。。
Spring 之自动化装配 bean 尝试的更多相关文章
- Spring实战之装配Bean
1.1Spring配置的可选方案 Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系.但是,作为开发人员,你需要告诉Spring要创建哪些bean并且如何将其装配在一起.当 ...
- 第2章—装配Bean—自动化装配Bean
自动化装配Bean 2.1.Spring配置可选方案 装配是依赖注入DI的本质,Spring提供了以下三种注入的装配机制: 在XMl中进行显式配置 在java中进行显式配置 隐式的Bean发现机制 ...
- spring的自动装配Bean与自动检测Bean
spring可以通过编写XML来配置Bean,也可以通过使用spring的注解来装配Bean. 1.自动装配与自动检测: 自动装配:让spring自动识别如何装配bean的依赖关系,减少对<pr ...
- Spring基础(一)------装配Bean
一.Spring配置的可选方案 三种主要的装配机制: 在xml文件中进行显示配置: 在java中进行显示配置: 隐式的bean发现机制和自动装配. 使用建议:尽可能使用自动配置的机制,显示配置越少越好 ...
- Spring学习(二)--装配Bean
一.Spring装配机制 Spring提供了三种主要的装配机制: 1.在XML中进行显示配置 2.在Java中进行显示配置 3.隐式的bean发现机制和自动装配--自动化装配bean Spring可以 ...
- Spring总结 1.装配bean
本随笔内容要点如下: 依赖注入 Spring装配bean的方式 条件化装配 一.依赖注入 我理解的依赖注入是这样的:所谓的依赖,就是对象所依赖的其他对象.Spring提供了一个bean容器,它负责创建 ...
- spring中自动装配bean
首先用@Component注解类: package soundsystem: import org.springframework.stereotype.Component; @Component p ...
- Spring学习系列(二) 自动化装配Bean
一.Spring装配-自动化装配 @Component和@ComponentScan 通过spring注解(@Component)来表明该类会作为组件类,并告知Spring要为这类创建bean,不过组 ...
- Spring入门(二):自动化装配bean
Spring从两个角度来实现自动化装配: 组件扫描(component scanning):Spring会自动发现应用上下文中需要创建的bean. 自动装配(autowiring):Spring会自动 ...
随机推荐
- [ppurl]从”皮皮书屋”下载电子书的姿势
(欢迎转载,转载请注明出处:http://blog.csdn.net/hcbbt/article/details/42072545) 写在前面的扯皮 为什么标题的"皮皮书屋"加上了 ...
- JavaScript修改IE注册表
http://www.cnblogs.com/zmc/p/3373812.html <script type="text/javascript"> var obj = ...
- Linux下wc命令详解
功能说明:计算字数. 语 法:wc [-clw][--help][--version][文件…] 补充说明:利用wc指令我们可以计算文件的Byte数.字数.或是列数,若不指定任何文件名称,或是所给 ...
- Android无线测试之—UiAutomator UiObject API介绍七
判断对象是否存在 1.判断对象是否存在相关API 返回值 API 描述 boolean waitForExists(long timeout) 等待对象出现 boolean waitUntilGone ...
- cxGrid 使用指南 1
1:cxgrid是应该数据关联的控件,类似dbgrid.2:一般用来查阅表信息,如果要修改的话,直接在上面编辑或添加 非常不方便通常要放几个EDit来对选中的记录进行编辑或添加记录. 因为表一般都有主 ...
- SpringMVC JSONP JSON支持
1.ajax端 $.ajax({ type: "post", dataType: "jsonp", //传递给请求处理程序,用以获得jsonp回调函数名的参数名 ...
- 【BZOJ4385】[POI2015]Wilcze doły 单调栈+双指针法
[BZOJ4385][POI2015]Wilcze doły Description 给定一个长度为n的序列,你有一次机会选中一段连续的长度不超过d的区间,将里面所有数字全部修改为0.请找到最长的一段 ...
- iOS 遍历控件
NSArray *subviews = [_bgImageView subviews]; for (id objInput in subviews) { if ([objInput isKindOfC ...
- resin配置
第一种方式: 在本机调试Resin服务,一般是在Eclipse IDE中进行,这样即可以快速的在开发环境中启动/终止Resin,又可以很方便的Debug程序.跟踪异常栈. 在任何版本的 ...
- ZOJ 3661 Palindromic Substring(回文树)
Palindromic Substring Time Limit: 10 Seconds Memory Limit: 65536 KB In the kingdom of string, p ...