文档章节

Spring 依赖注入(DI)

霍淇滨
 霍淇滨
发布于 06/18 23:39
字数 238
阅读 12
收藏 0
点赞 0
评论 0

1、Setter方法注入:

通过设置方法注入依赖。这种方法既简单又常用。

类中为属性定义setXx'x()方法:

public class HelloWorldOutput{
    HelloWorld helloWorld;
	
    public void setHelloWorld(HelloWorld helloWorld){
        this.helloWorld= helloWorld;
    }
}

XML配置依赖注入:

<bean id="helloWorldOutput" class="com.HelloWorldOutput">
	<property name="HelloWorld">
		<ref bean="HelloWorld_one" />
	</property>
</bean>

<bean id="HelloWorld_one" class="com.HelloWorld_one" />
<bean id="HelloWorld_two" class="com.HelloWorld_two" />

2、构造函数注入:

类中实现构造函数:

public class HelloWorldOutput{
    Helloworld helloworld;
	
    HelloWorldOutput(Helloworld helloworld){
        this.helloworld= helloworld;
    }
}

XML配置文件中配置依赖:

<bean id="helloWorldOutput" class="com.HelloWorldOutput">
    <constructor-arg>
        <bean class="HelloWorld_one" />
    </constructor-arg>
</bean>

<bean id="HelloWorld_one" class="com.HelloWorld_one" />
<bean id="HelloWorld_two" class="com.HelloWorld_two" />

构造函数注入依赖:

一个类如果提供多种构造函数,可能造成歧义问题。比如:

public class HelloWorldOutput{
    private String id;
    private int num;
	
    public HelloWorldOutput(String id, int num) {
        this.id= id;
        this.num = num;
    }
    public HelloWorldOutput(int num, String id) {
        this.num = num;
        this.id= id;
    }
}

这时,可以为构造函数指定的确切数据类型:

<bean id="helloWorld" class="com.HelloWorld">	
    <constructor-arg type="java.lang.String">
        <value>188</value>
    </constructor-arg>
	
    <constructor-arg type="int">
        <value>28</value>
    </constructor-arg>
</bean>

 

© 著作权归作者所有

共有 人打赏支持
霍淇滨
粉丝 17
博文 209
码字总数 167912
作品 0
南京
其他
Spring IoC & DI

IOC诞生的历史 在没有IoC时,关联不同模块是通过类实例实现的,代码可能是这样子的: 当YourServiceImpl的接口不变时,只需要根据业务需要更换不同的YourService实现类即可。一旦更换实现类时...

classfly
06/18
0
0
Spring Dependency

我们知道Spring的最重要的核心是Ioc,有时候也被称为DI(Dependency Injection,依赖注入),那么关于Dependency,你了解多少呢? 之前我们有提到IOC和DI的关系与概念,我是把它们区分开了,所...

Real_man
05/20
0
0
spring面试题 对DI , AOP概念的理解

spring 的优点? 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易...

罗荣熙
2012/11/12
0
0
Spring面试,IoC和AOP的理解

spring 的优点? 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易...

Sandy_wu
2013/06/08
0
0
spring IOC/DI容器的理解

参与者:应用程序和spring 正向:现在的程序方向,A对象要使用B对象,现在是A里面直接创建B的实例,然后调用。 publc class A{ void t1(){ new B().t2(); } } public class B{ void t2(); 简...

君辰
2015/08/01
0
0
spring 入门及IOC容器

Spring 一.Spring,原意“春天”,是一种轻量级容器框架,所谓轻量级就是依赖比较少,侵入性较低,其核心就是1. IOC(Inversion of Control)/DI(Dependency Injection)IoC的核心思想是通过消...

天国使者125
2013/06/15
0
0
2014-03-10 Spring的学习(2)------依赖注入和自动扫描Bean

1.依赖注入(DI)的概念 所谓的依赖注入是指在运行期,由外部容器将依赖对象注入到组件中.依赖注入(DI)背后的基本原理是对象之间的依赖关系(即一起工作的其它对象).例如:Service业务层依赖D...

查封炉台
2014/03/10
0
0
轻松学习Spring IoC容器和Dependency Injection模式(转)

转载:Bromon的blog 下面就是引用他说的话: IoC与DI   首先想说说IoC(Inversion of Control,控制倒转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责...

zgyin688
2012/10/09
0
0
Spring MVC 到 Spring BOOT的简化之路

背景 从Servlet技术到Spring和Spring MVC,开发Web应用变得越来越简捷。但是Spring和Spring MVC的众多配置有时却让人望而却步,相信有过Spring MVC开发经验的朋友能深刻体会到这一痛苦。因为...

临江仙卜算子
05/09
0
0
【转载】轻松学习Spring: IoC容器和Dependency Injection模式

最近公司需要,项目中要用到Spring和Ibatis。趁着过年好好学习学习。Ibatis就如同Hibernate一样的持久层技术,学习起来难度不大,但Spring可不一样,揣着Ioc,DJ和AOP,四处走红。学起来可不...

Start-up
2012/05/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

android屏幕适配

android屏幕适配 采用的是鸿阳的适配方式,项目依赖: compile 'com.zhy:autolayout:1.4.5' 使用步骤: 在manifest文件中标注你的设计图尺寸 <meta-data android:name="design_width" andro...

android-key
5分钟前
0
0
istio 0.8 安装步骤

============================ istio 0.8 安装步骤--------------------------------------- istio 0.8 安装步骤 1.安装k8s环境 参考:http://sealyun.com/pro/products/ master,salve两台机......

xiaomin0322
7分钟前
1
0
tmux 退出不干净问题

tmux ls 已经没有窗口了,但是显示还有在登入 只有强制T下线了。

NLGBZJ
8分钟前
0
0
卡辛斯基的警告

卡辛斯基的警告 作者: 阮一峰 1、 1978年5月25日,美国西北大学的工程教授巴克利·克利斯(Buckley Crist),收到了邮政局退回的一个包裹。 这个包裹寄往芝加哥大学,但是收件人“查无此人”...

祖冲之
8分钟前
0
0
如何一周内学会编程?实战项目中总结经验[图]

如何一周内学会编程?实战项目中总结经验[图]: 我知道有很多草根肯定都是日常有很多各种各样,自己认为非常有价值的想法,但是,苦于自己没有技术,无法实现自己的需求,典型的属于“就差一...

原创小博客
13分钟前
0
0
UILabel和UITextView文字换行差异

多行文本换行时,一般要求结尾如果是标点符号,标点符号不能单独占一行,需要将上一行的最后一个文字将和标点符号一起放在下一行。 设置 lineBreakMode = .byWordWrapping,按单词分割换行。...

十八郎
15分钟前
0
0
C++ 使用TinyXML解析XML文件

读取和设置xml配置文件是最常用的操作,TinyXML是一个开源的解析XML的C++解析库,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便...

LoSingSang
18分钟前
0
0
cron-chkconfig-systemd-unit-target

任务计划cron: /etc/crontab #任务计划配置文件 格式: 分(0-59) 时(0-23) 日(1-31) 月(1-12) 周(0-6or1-7) 用户 命令 /var/spool/cron/[username] #各个用户配置的任务历史 配置...

ZHENG-JY
20分钟前
0
0
Java反射和动态代理学习

一、Java在运行是识别对象和类的信息,主要有两种方式:一种是传统RTTI,假定在编译时已经知道了所有的类型信息,另一种是反射机制,允许我们在运行时发现和使用类的信息。 每个类都会产生一...

cjxcloud
21分钟前
0
0
react-native 使用webview调用自己书写的页面

之前只接触调用线上别人的页面,原来也可以使用自己书写的页面,代码如下: <WebView ref={webView =>this.webView = webView} onNavigationStateChange={e=>this.change(e)} source =......

前端大白
25分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部