学习 Spring (二) Spring 注入
Spring入门篇 学习笔记
常用的两种注入方式
- 设值注入
- 构造注入
示例准备工作
添加 InjectionDAO:
public interface InjectionDAO {
void save(String arg);
}
添加 InjectionDAOImpl:
public class InjectionDAOImpl implements InjectionDAO {
public void save(String arg) {
System.out.println("保存数据:" + arg);
}
}
添加 InjectionService:
public interface InjectionService {
void save(String arg);
}
设值注入
添加 InjectionServicePropertyImpl:
public class InjectionServicePropertyImpl implements InjectionService {
private InjectionDAO injectionDAO;
public void setInjectionDAO(InjectionDAO injectionDAO) {
this.injectionDAO = injectionDAO;
}
public void save(String arg) {
System.out.println("Service(Property)接收参数:" + arg);
arg = arg + ":" + this.hashCode();
injectionDAO.save(arg);
}
}
添加配置文件 classpath:spring-injection-property.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" >
<bean id="injectionService" class="com.karonda.ioc.injection.service.InjectionServicePropertyImpl">
<property name="injectionDAO" ref="injectionDAO"></property>
</bean>
<bean id="injectionDAO" class="com.karonda.ioc.injection.dao.InjectionDAOImpl"></bean>
</beans>
添加测试 TestInjectionProperty:
@RunWith(BlockJUnit4ClassRunner.class)
public class TestInjectionProperty extends UnitTestBase {
public TestInjectionProperty() {
super("classpath:spring-injection-property.xml");
}
@Test
public void testSetter() {
InjectionService service = super.getBean("injectionService");
service.save("这是要保存的数据");
}
}
构造注入
添加 InjectionServiceConstructorImpl:
public class InjectionServiceConstructorImpl implements InjectionService {
private InjectionDAO injectionDAO;
//构造器注入
public InjectionServiceConstructorImpl(InjectionDAO injectionDAO) {
this.injectionDAO = injectionDAO;
}
public void save(String arg) {
//模拟业务操作
System.out.println("Service(Constructor)接收参数:" + arg);
arg = arg + ":" + this.hashCode();
injectionDAO.save(arg);
}
}
添加配置文件 spring-injection-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" >
<bean id="injectionService" class="com.karonda.ioc.injection.service.InjectionServiceConstructorImpl">
<constructor-arg name="injectionDAO" ref="injectionDAO"></constructor-arg>
</bean>
<bean id="injectionDAO" class="com.karonda.ioc.injection.dao.InjectionDAOImpl"></bean>
</beans>
添加测试 TestInjectionConstructor
@RunWith(BlockJUnit4ClassRunner.class)
public class TestInjectionConstructor extends UnitTestBase {
public TestInjectionConstructor() {
super("classpath:spring-injection-constructor.xml");
}
@Test
public void testCons() {
InjectionService service = super.getBean("injectionService");
service.save("这是要保存的数据");
}
}
源码:learning-spring
学习 Spring (二) Spring 注入的更多相关文章
- Spring学习笔记二:注入方式
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6774608.html 我们说,IOC的实现方式是依赖注入,也就是把被依赖对象赋值到依赖对象的成员属性.怎么做 ...
- spring学习笔记二:spring使用构造方法注入(set方式注入)
项目目录树: 1.spring的依赖包配置 * SPRING_HOME/dist/spring.jar * SPRING_HOME/lib/log4j/log4j-1.2.14.jar * SPRIN ...
- SSH框架入门学习之二(spring)
Spring也是一个开源框架,我在学习Spring的时候,认为最重要的几点是:IOC(控制反转).AOP(面向切面)和容器概念. 详细的教程还请大家去看网上的视频,这里贴一个小Demo以供学习. (前 ...
- Spring学习(十二)-----Spring @PostConstruct和@PreDestroy实例
实现 初始化方法和销毁方法3种方式: 实现标识接口 InitializingBean,DisposableBean(不推荐使用,耦合性太高) 设置bean属性 Init-method destroy- ...
- Spring学习(十二)-----Spring Bean init-method 和 destroy-method实例
实现 初始化方法和销毁方法3种方式: 实现标识接口 InitializingBean,DisposableBean(不推荐使用,耦合性太高) 设置bean属性 Init-method destroy- ...
- spring cloud深入学习(十二)-----Spring Cloud Zuul网关 Filter、熔断、重试、高可用的使用方式
Zuul的核心 Filter是Zuul的核心,用来实现对外服务的控制.Filter的生命周期有4个,分别是“PRE”.“ROUTING”.“POST”.“ERROR”,整个生命周期可以用下图来表示. ...
- Spring 4.0.2 学习笔记(2) - 自动注入及properties文件的使用
接上一篇继续, 学习了基本的注入使用后,可能有人会跟我一样觉得有点不爽,Programmer的每个Field,至少要有一个setter,这样spring配置文件中才能用<property> ...
- Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客
==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...
- Spring.NET依赖注入框架学习--简单对象注入
Spring.NET依赖注入框架学习--简单对象注入 在前面的俩篇中讲解了依赖注入的概念以及Spring.NET框架的核心模块介绍,今天就要看看怎么来使用Spring.NET实现一个简单的对象注入 常 ...
随机推荐
- 初学Python——列表生成式、生成器和迭代器
一.列表生成式 假如现在有这样一个需求:快速生成一个列表[1,2,3,4,5,6,7,8,9,10],该如何实现? 在不知道列表生成式的情况下,可能会这样写: a=[1,2,3,4,5,6,7,8,9 ...
- 输出 1-100 内的奇数和偶数,并对其分别求和(while嵌套if-else循环)
package com.summer.cn; /** * @author Summer * 输出 1-100 内的奇数和偶数,并对其分别求和 * while嵌套if-else循环 */ public ...
- anaconda新建虚拟环境安装各个依赖包
深度学习的代码,好多都需要安装一些安装包,在服务器上安装需要权限就很麻烦.看到网上有说把这些安装包一个个下载下来上传到服务器再安装,心累,想想工程量就很大~~~ 这时候就可以在anaconda中新建虚 ...
- Java正则表达式初探(一)
好多同学们总是听别人说起正则表达式这个东西,也有很多用接触到实际使用过.但是相信有很大一部分人是在用的时候采取网站上搜索,拿一个一知半解的别人写的例子过来,简单测试下功能可用,就OK了.正则表达式那晦 ...
- JasperReport子报表参数传递
子报表参数传递 下图的参数名称可以自定义 再子报表新增一个同名称的参数即可
- gohost -- go 开发的命令行hosts配置管理工具
前几天在微博上看到有人推荐了lazygit这个工具,让人眼前一亮,什么时候命令行也可以这么抢到了,
- TensorFlow 使用变量共享
参考: https://www.tensorflow.org/programmers_guide/variable_scope 举例说明 TensorFlow中的变量一般就是模型的参数.当模型复杂的时 ...
- mysql 库 行 列的 操作使用
-----------------------------------------------------------------------------时间不等你,下一刻,全是新的.每一刻都让它变得 ...
- Leetcode 686 Repeated String Match
Given two strings A and B, find the minimum number of times A has to be repeated such that B is a su ...
- 动态规划-LIS最长上升子序列
优化链接 [https://blog.csdn.net/George__Yu/article/details/75896330] #include<stdio.h> #include< ...