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 ...
随机推荐
- 查看详细linux系统信息的命令和方法
查看内存大小: cat /proc/meminfo |grep MemTotaluname -a # 查看内核/操作系统/CPU信息的linux系统信息命令head -n 1 /etc/issue # ...
- 二创建maven父子项目
关于maven中的parent聚合一直都有没好好总结,固有这篇. ------------------------------------------------------------------- ...
- [Groovy]Parse properties file in Groovy
def props = new Properties() new File("foo.properties").withInputStream { s -> props.lo ...
- 电路中IC器件电压符号的解释
在电子芯片.运算处理器等集成电路行业中,存在多种电压.常用的的有:VDDQ->The supply voltage to output buffers of a memory chip 存储芯片 ...
- 查询linux服务器有哪些IP在连接
查询linux服务器有哪些IP在连接 netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n 查看linux的 ...
- 启用NFS方案(读写分离)
- 一般小的maven pom
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- Nand Flash 基础
1. 根据物理结构上的区别,Nand Flash主要分为: SLC(Single Level Cell): 单层式存储 MLC(Multi Level Cell): 多层式存储 TLC(Triple ...
- tomcat 虚拟目录配置appBase和docBase的区别
先看server.xml文件host配置 <Host name="localhost" appBase="webapps" 可以修改成自己想 ...
- 基于spring boot 和MDC实现 同一笔记录的日志跟踪实现--1.filter
同一个项目中,一般包含controller/servlet.service.dao等.1笔记录的日志贯穿于controller.service.dao中,在并发情况下,那如何找出该笔日志? 可通过以下 ...