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