学习 Spring (六) 自动装配
Spring入门篇 学习笔记
- No: (默认)不做任何操作
 - byName: 根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的 bean,并将其与属性自动装配
 - byType: 如果容器中存在一个与指定属性类型相同的 bean,那么将与该属性自动装配;如果存在多个该类型的 bean,那么抛出异常,并指出不能使用 byType 方式进行自动装配;如果没有找到相匹配的 bean,则什么事都不发生
 - constructor: 与 byType 方式类似,不同之处在于它应用于构造器参数。如果容器中没有找到与构造器参数类型一致的 bean 则抛出异常
 
准备工作,添加 AutoWiringDAO:
public class AutoWiringDAO {
	public void say(String word) {
		System.out.println("AutoWiringDAO : " + word);
	}
}
byName
添加 AutoWiringServiceByName:
public class AutoWiringServiceByName {
	private AutoWiringDAO autoWiringDAO;
	public void setAutoWiringDAO(AutoWiringDAO autoWiringDAO) {
		this.autoWiringDAO = autoWiringDAO;
	}
	public void say(String word) {
		this.autoWiringDAO.say(word);
	}
}
添加配置文件 spring-autowiring-byname.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"
        default-autowire="byName">
        <bean id="autoWiringService" class="com.karonda.autowiring.AutoWiringServiceByName" ></bean>
        <bean id="autoWiringDAO" class="com.karonda.autowiring.AutoWiringDAO" ></bean>
 </beans>
添加测试类:
@RunWith(BlockJUnit4ClassRunner.class)
public class TestAutoWiringByName extends UnitTestBase {
	public TestAutoWiringByName() {
		super("classpath:spring-autowiring-byname.xml");
	}
	@Test
	public void testSay() {
		AutoWiringServiceByName service = super.getBean("autoWiringService");
		service.say(" this is a test");
	}
}
byType
添加 AutoWiringServiceByType:
public class AutoWiringServiceByType {
	private AutoWiringDAO autoWiringDAO;
	public void setAutoWiringDAO(AutoWiringDAO autoWiringDAO) {
		this.autoWiringDAO = autoWiringDAO;
	}
	public void say(String word) {
		this.autoWiringDAO.say(word);
	}
}
添加配置文件 spring-autowiring-bytype.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"
        default-autowire="byType">
        <bean id="autoWiringService" class="com.karonda.autowiring.AutoWiringServiceByType" ></bean>
        <bean class="com.karonda.autowiring.AutoWiringDAO" ></bean>
 </beans>
添加测试类:
@RunWith(BlockJUnit4ClassRunner.class)
public class TestAutoWiringByType extends UnitTestBase {
	public TestAutoWiringByType() {
		super("classpath:spring-autowiring-bytype.xml");
	}
	@Test
	public void testSay() {
		AutoWiringServiceByType service = super.getBean("autoWiringService");
		service.say(" this is a test");
	}
}
constructor
添加 AutoWiringServiceConstructor
public class AutoWiringServiceConstructor {
	private AutoWiringDAO autoWiringDAO;
	public AutoWiringServiceConstructor(AutoWiringDAO autoWiringDAO){
		this.autoWiringDAO = autoWiringDAO;
	}
	public void say(String word) {
		this.autoWiringDAO.say(word);
	}
}
添加配置文件 spring-autowiring-constructor.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"
        default-autowire="constructor">
        <bean id="autoWiringService" class="com.karonda.autowiring.AutoWiringServiceConstructor" ></bean>
        <bean class="com.karonda.autowiring.AutoWiringDAO" ></bean>
 </beans>
添加测试类:
@RunWith(BlockJUnit4ClassRunner.class)
public class TestAutoWiringConstructor extends UnitTestBase {
	public TestAutoWiringConstructor() {
		super("classpath:spring-autowiring-constructor.xml");
	}
	@Test
	public void testSay() {
		AutoWiringServiceConstructor service = super.getBean("autoWiringService");
		service.say(" this is a test");
	}
}
源码:learning-spring
学习 Spring (六) 自动装配的更多相关文章
- Spring Boot 自动装配(二)
		
目录 目录 前言 1.起源 2.Spring Boot 自动装配实现 2.1.@EnableAutoConfiguration 实现 2.1.1. 获取默认包扫描路径 2.1.2.获取自动装配的组件 ...
 - Spring的自动装配Bean
		
spring的自动装配功能的定义:无须在Spring配置文件中描述javaBean之间的依赖关系(如配置<property>.<constructor-arg>).IOC容器会 ...
 - spring完成自动装配
		
让spring完成自动装配 Autowiring 解决标签为javaBean注入时难以维护而实现的 下面是几种autowire type的说明: 1,byname:试图在容器中寻找和需要自动装配的属性 ...
 - spring中自动装配bean
		
首先用@Component注解类: package soundsystem: import org.springframework.stereotype.Component; @Component p ...
 - spring的自动装配,骚话@Autowired的底层工作原理
		
前言 开心一刻 十年前,我:我交女票了,比我大两岁.妈:不行!赶紧分! 八年前,我:我交女票了,比我小两岁,外地的.妈:你就不能让我省点心? 五年前,我:我交女票了,市长的女儿.妈:别人还能看上你?分 ...
 - 五、Spring之自动装配
		
Spring之自动装配  Spring利用依赖注入(DI),完成对IOC容器中各个组件依赖关系的赋值. [1]@Autowired @Autowired 注解,它可以对类成员变量.方法及构造函数进行 ...
 - Eureka 系列(03)Spring Cloud 自动装配原理
		
Eureka 系列(03)Spring Cloud 自动装配原理 [TOC] 0. Spring Cloud 系列目录 - Eureka 篇 本文主要是分析 Spring Cloud 是如何整合 Eu ...
 - Spring Boot自动装配
		
前言 一些朋友问我怎么读源码,这篇文章结合我看源码时候一些思路给大家聊聊,我主要从这三个方向出发: 确定目标,这个目标要是一个具体,不要一上来我要看懂Spring,这是不可能的,目标要这么来定,比如看 ...
 - Spring Boot自动装配原理源码分析
		
1.环境准备 使用IDEA Spring Initializr快速创建一个Spring Boot项目 添加一个Controller类 @RestController public class Hell ...
 
随机推荐
- wordpress数据表分析
			
wordpress一共是有12个表的:|wp_commentmeta || wp_comments || wp_links || wp_options || wp_postmeta || wp_pos ...
 - phpstorm 免费激活码
			
打开网址 http://idea.lanyus.com/ 选择获取注册码,复制生成的验证码 安装完成后,打开软件,依次选择菜单栏 Help -> Register-> Activation ...
 - UITableView的编辑操作
			
继续上篇UITableView和UITableViewController, 打开BNRItemsViewController.m,在类扩展中添加如下属性: @property (nonatomic, ...
 - Linux每天一个命令:grep
			
grep (缩写来自Globally search a Regular Expression and Print) 是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出 ...
 - .NET Core 中的路径问题
			
NET Core 应用程序相对于以前的.NET Framework 应用程序在启动运行的方式上有一定的差异,今天就来谈一谈这个获取应用程序启动路径的问题. 1.工作路径 WorkingDirector ...
 - 一致性环Hash算法.NET实现
			
一致性环Hash算法有一个大用处就是解决Memcache服务器down机问题的.目的是增加或者移除Memcache服务器后,最大限度的减少所受影响. 理论方面的就不介绍了,网上有太多资料了,请大家自己 ...
 - 封装自己的dapper lambda扩展-设计篇
			
前言 昨天开源了业务业余时间自己封装的dapper lambda扩展,同时写了篇博文<编写自己的dapper lambda扩展-使用篇>简单的介绍了下其使用,今天将分享下它的设计思路 链式 ...
 - CSS3下的渐变文字效果实现
			
如下,第一种方法已实践 一.方法一:借助mask-image属性 可以狠狠地点击这里:CSS3下的渐变文字效果方法一demo 如果您手头上的浏览器是Chrome或是Safari,则您可以在demo页面 ...
 - 便于记忆的SA构造
			
首先学习基数排序. memset(b, 0, sizeof(b)); for(int i = 0; i < n; i++) b[a[i]]++; for(int i = 1; i <= m ...
 - pip 安装 和 卸载 django
			
1. 在dos命令行中输入 pip 如下命令进行安装: 安装最新的版本的 Django 命令如下: pip install django 安装 指定版本的 Django 命令如下: pip insta ...