Spring入门篇 学习笔记

常用的两种注入方式

  1. 设值注入
  2. 构造注入

示例准备工作

添加 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 注入的更多相关文章

  1. Spring学习笔记二:注入方式

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6774608.html  我们说,IOC的实现方式是依赖注入,也就是把被依赖对象赋值到依赖对象的成员属性.怎么做 ...

  2. spring学习笔记二:spring使用构造方法注入(set方式注入)

    项目目录树: 1.spring的依赖包配置 * SPRING_HOME/dist/spring.jar * SPRING_HOME/lib/log4j/log4j-1.2.14.jar * SPRIN ...

  3. SSH框架入门学习之二(spring)

    Spring也是一个开源框架,我在学习Spring的时候,认为最重要的几点是:IOC(控制反转).AOP(面向切面)和容器概念. 详细的教程还请大家去看网上的视频,这里贴一个小Demo以供学习. (前 ...

  4. Spring学习(十二)-----Spring @PostConstruct和@PreDestroy实例

    实现 初始化方法和销毁方法3种方式: 实现标识接口 InitializingBean,DisposableBean(不推荐使用,耦合性太高) 设置bean属性 Init-method destroy- ...

  5. Spring学习(十二)-----Spring Bean init-method 和 destroy-method实例

    实现 初始化方法和销毁方法3种方式: 实现标识接口 InitializingBean,DisposableBean(不推荐使用,耦合性太高) 设置bean属性 Init-method destroy- ...

  6. spring cloud深入学习(十二)-----Spring Cloud Zuul网关 Filter、熔断、重试、高可用的使用方式

    Zuul的核心 Filter是Zuul的核心,用来实现对外服务的控制.Filter的生命周期有4个,分别是“PRE”.“ROUTING”.“POST”.“ERROR”,整个生命周期可以用下图来表示. ...

  7. Spring 4.0.2 学习笔记(2) - 自动注入及properties文件的使用

    接上一篇继续, 学习了基本的注入使用后,可能有人会跟我一样觉得有点不爽,Programmer的每个Field,至少要有一个setter,这样spring配置文件中才能用<property> ...

  8. Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客

    ==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...

  9. Spring.NET依赖注入框架学习--简单对象注入

    Spring.NET依赖注入框架学习--简单对象注入 在前面的俩篇中讲解了依赖注入的概念以及Spring.NET框架的核心模块介绍,今天就要看看怎么来使用Spring.NET实现一个简单的对象注入 常 ...

随机推荐

  1. eclipse如何设置断点&断点处运行快捷键

    第一步: 设置断点:在该行最前面边框双击  或快捷键:Ctrl+Shift+B   第二步: Debug 运行启动   第三部: 运行到断点后: 使用快捷键F5,F6,F7单步执行. F5:Step ...

  2. 《Web接口开发与自动化测试 -- 基于Python语言》---现已出版。

    终于可以购买了!! 有需要的同学通过下面链接购买. 购买来链接: https://item.jd.com/11806319423.html 为什么要出这样一本书? 首先,今年我有不少工作是跟接口自动化 ...

  3. RichTextbox下Hyperlink的Click无效

    原文:RichTextbox下Hyperlink的Click无效 两种方式解决: 1.<RichTextBox IsReadOnly="True" IsDocumentEna ...

  4. 开发框架模块视频系列(2)-Winform分页控件介绍

    在软件开发过程中,为了节省开发时间,提高开发效率,统一用户处理界面,尽可能使用成熟.功能强大的分页控件,这款Winform环境下的分页控件,集成了数据分页.内容提示.数据打印.数据导出.表头中文转义等 ...

  5. 深入浅出:5G和HTTP

    本文将会讲到5G和HTTP.曾经在深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 3 提到为什么有些RPC框架不选用HTTP,而5G会采用HTTP. 您可以从本文里获取到一 ...

  6. .NetCore实践爬虫系统(一)解析网页内容

    爬虫系统的意义 爬虫的意义在于采集大批量数据,然后基于此进行加工/分析,做更有意义的事情.谷歌,百度,今日头条,天眼查都离不开爬虫. 今日目标 今天我们来实践一个最简单的爬虫系统.根据Url来识别网页 ...

  7. python--__init__()方法和__new__()方法

    这两个方法是python类中的基本方法,经常会在一些面试中问到.即便没有要面试之类的,学习一下其内部的原理和使用也是有必要的. 首先区分一下这两个方法: __init__:初始化方法 __new__: ...

  8. .net core2 笔记

    资源: https://github.com/aspnet/home https://github.com/dotnet/cli https://www.cnblogs.com/billyang/p/ ...

  9. 小L的项链切割 (回文串)

    题目描述 小T送给了小L了一串项链.为了方便,我们把项链上形态不同钻石用不同的字母表示.这样小L的项链就变成了一个字符串.小L忽然想把这串项链优美地切割一下,她想把它切割成尽量少的回文项链,啊也就是回 ...

  10. matplotlib 入门之Sample plots in Matplotlib

    文章目录 Line Plot One figure, a set of subplots Image 展示图片 展示二元正态分布 A sample image Interpolating images ...