课程链接:

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();
} } }

最新文章

  1. 我的Python学习之路 Python的初识与准备工作
  2. CSS Shake – 摇摆摇摆!动感的 CSS 抖动效果
  3. list如何remove 特别容易出错
  4. 【JavaScript学习笔记】调用google搜索
  5. 【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
  6. DataGridView添加另外一个控件。
  7. Jsp request
  8. Android 系统搜索框(有浏览记录)
  9. node.js下mongoose简单操作实例
  10. Ubuntu安装微信
  11. ●hihocoder #1394 网络流四&middot;最小路径覆盖
  12. 自己编译Android(小米5)内核并刷入(一键自动编译打包)
  13. pycharm导入自定义py文件出错
  14. Win10 - MySQL-zip安装方法
  15. IQuerable与IEnumable的区别
  16. centos7 克隆 网卡无法启用
  17. 拓展Scene视图——场景编辑Vector2/3
  18. windows“启动”对应的路径
  19. 利用pycharm进行重构学习记录
  20. Python(文件处理)

热门文章

  1. js初识
  2. SP18637 LAWRENCE - Lawrence of Arabia
  3. Number BZOJ3275 最大流
  4. C#WinForm POST方式提交给网页(与网页交互) (转)
  5. shiro 的简单应用
  6. Ubuntu Server 使用 PPA 安装 Java (JDK) 8
  7. 1047 邮票面值设计 (DFS+DP)
  8. OJ 26217 :Work Scheduling(贪心+优先队列)
  9. 数据恢复(Data recovery)
  10. 阿里Java开发规约(2)