Spring课程 Spring入门篇 3-4 Spring bean装配(上)之自动装配
1 自动装配的方式
2 自动装配实现
1 自动装配的方式
根据反射的机制
1.1 byName根据属性名自动装配,类似于依赖注入的set注入。(如果找不到set属性中的bean,如果test中用try方法的话,报空指针异常)
1.2 byType根据类名进行注入,xml配置文件beanId可以不用写
1.3 constructor应用于构造器参数。(找不到构造器参数一致的bean,抛异常)
2 自动装配实现
2.1 自动装配byName:
该方式实现方式与set注入类似,唯一不同之处见xml配置文件红色部分
实体类:
package com.imooc.autowiring;
public class AutoWiringDaoImpl implements AutoWiringDao{
@Override
public void say(String word) {
// TODO Auto-generated method stub
System.out.println("请你说话:"+word);
}
}
接口(与set注入相同):
package com.imooc.autowiring;
public class AutoWiringService {
private AutoWiringDao autoWiringDao;
public void setAutoWiringDao(AutoWiringDao autoWiringDao) {
this.autoWiringDao = autoWiringDao;
}
public void sayHello(String word){
autoWiringDao.say(word);
}
}
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.imooc.autowiring.AutoWiringService">
<!-- <property name="autoWiringDao" ref="autoWiringDao"></property> -->
</bean>
<bean id="autoWiringDao" class="com.imooc.autowiring.AutoWiringDaoImpl"></bean> </beans>
测试文件:
package com.imooc.autowiring; import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner; import com.imooc.test.base.UnitTestBase; @RunWith(BlockJUnit4ClassRunner.class)
public class TestAutoWiring extends UnitTestBase{ public TestAutoWiring() {
super("classpath:spring-autowiring.xml");
// TODO Auto-generated constructor stub
} @Test
public void testAutoWiring(){
try {
AutoWiringService aws = super.getbean("autoWiringService");
aws.sayHello("老婆好!");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} } }
打印结果
三月 02, 2019 6:51:24 上午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@652c4193: startup date [Sat Mar 02 06:51:24 CST 2019]; root of context hierarchy
三月 02, 2019 6:51:24 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [spring-autowiring.xml]
请你说话:老婆好!
三月 02, 2019 6:51:25 上午 org.springframework.context.support.ClassPathXmlApplicationContext doClose
信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@652c4193: startup date [Sat Mar 02 06:51:24 CST 2019]; root of context hierarchy
2.2 自动装配byType(其他文件与byName完全一致,只有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"
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.imooc.autowiring.AutoWiringService">
</bean>
<bean id="autoWiringDao111" class="com.imooc.autowiring.AutoWiringDaoImpl"></bean> </beans>
打印结果
三月 02, 2019 6:51:24 上午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@652c4193: startup date [Sat Mar 02 06:51:24 CST 2019]; root of context hierarchy
三月 02, 2019 6:51:24 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [spring-autowiring.xml]
请你说话:老婆好!
三月 02, 2019 6:51:25 上午 org.springframework.context.support.ClassPathXmlApplicationContext doClose
信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@652c4193: startup date [Sat Mar 02 06:51:24 CST 2019]; root of context hierarchy
2.3 constructor(类似于构造依赖注入法)
实体类:
package com.imooc.autowiring;
public class AutoWiringService {
private AutoWiringDao autoWiringDao;
// public void setAutoWiringDao(AutoWiringDao autoWiringDao) {
// this.autoWiringDao = autoWiringDao;
// }
public AutoWiringService(AutoWiringDao autoWiringDao) {
this.autoWiringDao = autoWiringDao;
}
public void sayHello(String word){
autoWiringDao.say(word);
}
public AutoWiringService() {
super();
// TODO Auto-generated constructor stub
}
}
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.imooc.autowiring.AutoWiringService">
</bean>
<bean id="autoWiringDao111" class="com.imooc.autowiring.AutoWiringDaoImpl"></bean> </beans>
测试类:
package com.imooc.autowiring; import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner; import com.imooc.test.base.UnitTestBase; @RunWith(BlockJUnit4ClassRunner.class)
public class TestAutoWiring extends UnitTestBase{ public TestAutoWiring() {
super("classpath:spring-autowiring.xml");
// TODO Auto-generated constructor stub
} @Test
public void testAutoWiring(){
try {
AutoWiringService aws = super.getbean("autoWiringService");
aws.sayHello("老婆好!");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} } }
Spring课程 Spring入门篇 3-4 Spring bean装配(上)之自动装配的更多相关文章
- Spring Boot -01- 快速入门篇(图文教程)
Spring Boot -01- 快速入门篇(图文教程) 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到[慕课网]手机 app ...
- Spring实践系列-入门篇(一)
本文主要介绍了在本地搭建并运行一个Spring应用,演示了Spring依赖注入的特性 1 环境搭建 1.1 Maven依赖 目前只用到依赖注入的功能,故以下三个包已满足使用. <properti ...
- spring学习总结——装配Bean学习一(自动装配)
一.Spring配置的可选方案 Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系.但是,作为开发人员,你需要告诉Spring要创建哪些bean并且如何将其装配在一起.当描 ...
- 一步步从Spring Framework装配掌握SpringBoot自动装配
目录 Spring Framework模式注解 Spring Framework@Enable模块装配 Spring Framework条件装配 SpringBoot 自动装配 本章总结 Spring ...
- Spring Boot之从Spring Framework装配掌握SpringBoot自动装配
Spring Framework模式注解 模式注解是一种用于声明在应用中扮演“组件”角色的注解.如 Spring Framework 中的 @Repository 标注在任何类上 ,用于扮演仓储角色的 ...
- Spring Cloud Alibaba入门篇
学习条件 了解web三层架构 熟练应用SSM架构 了解Maven管理工具的使用 熟练使用SpringBoot,以及了解SpringBoot基本原理. 了解部分术语:应用.工具.耦合.负载等 温馨提示: ...
- Spring Data JPA 入门篇
Spring Data JPA是什么 它是Spring基于ORM框架(如hibernate,Mybatis等).JPA规范(Java Persistence API)封装的一套 JPA应用框架,可使开 ...
- 【Spring注解驱动开发】如何实现方法、构造器位置的自动装配?我这样回答让面试官很满意!
在 冰河技术 微信公众号前面的文章中,我们介绍了如何使用注解来自动装配Spring组件.之前将的都是在来的字段上添加注解,那有没有什么方法可以实现方法.构造器位置的自动装配吗?今天我们就一起来探讨下如 ...
- Spring(九):Spring配置Bean(二)自动装配的模式、Bean之间的关系
XML配置里的Bean自动装配 Spring IOC容器可以自动装配Bean,需要做的仅仅是在<bean>的autowire属性里指定自动装配的模式,模式包含:byType,byName, ...
- Spring学习七----------Bean的配置之自动装配
© 版权声明:本文为博主原创文章,转载请注明出处 Bean的自动装配(Autowiring) no:不启用自动装配,此时需要手动注入.参考:Spring学习三----------注入方式 defaul ...
随机推荐
- Bit(位) and Byte(字节) ASCll 编码【基础】
Bit(位) 与Byte(字节)的区别bit意为“位”,是计算机运算的基础,与数据处理速度和传输速度有关.比如:USB2.0标准接口传输速率为480Mbps,其中bps=bits per second ...
- 魔法少女 LJJ——线段树
题目 [题目描述] 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女 LJJ 已经觉得自己见过世界上的所有稀奇古怪的事情了. LJJ 感叹道“这里真是个迷人的绿色世界,空气清新.淡雅,到处 ...
- DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)
SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存 ...
- Qt 学习之路 2(4):信号槽
Home / Qt 学习之路 2 / Qt 学习之路 2(4):信号槽 Qt 学习之路 2(4):信号槽 豆子 2012年8月23日 Qt 学习之路 2 110条评论 信号槽是 Qt 框架引以 ...
- Android 远程连接数据库。。。。。
本来是 6.0.6 换成mysql 5.1.14 驱动ok.... 将方法 放在 new Thread() 解决..... 只能在主线程绘制ui.... 解决办法...子Thread 获取数据后,将 ...
- HDU 1565 方格取数(简单状态压缩DP)
http://acm.hdu.edu.cn/showproblem.php?pid=1565 对于每一个数,取或者不取,用0表示不取,1表示取,那么对于每一行的状态,就可以用一个二进制的数来表示.比如 ...
- day 006 小数据池和再谈编码
1.小数据池. 目的:缓存我们的字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存: int str bool int 范围:-5~256 str: 1.长度小于等于1,直接缓存 2.长度大 ...
- python3 生成器笔记
#生成器def MyDemo(M): for i in range(M): yield i**2for item in MyDemo(9): print(item) # #生成器import sysa ...
- jgroups-raft
要求 Java 8 支持 实现服务器的动态添加和删除 文档的编写 基于复制计数器的共识算法实现 https://github.com/belaban/jgroups-raft
- python模块之HTMLParser简介
html.parser是一个非常简单和实用的库,它的核心是HTMLParser类. 工作的流程是:当你feed给它一个类似HTML格式的字符串时,它会调用goahead方法向前迭代各个标签,并调用对应 ...