Sping4之依赖注入
Spring的依赖注入可以是我们不需要去管理bean,网上看到一个回答很精辟:
现在你需要买一把锤子:
1、自己做一把,解释成java就是,调用者创建被调用着,也就是自己去创造一个造锤子的方法,然后自己调用;
2、自己找到生产锤子的工厂,然后问工厂买。就是工厂模式;
3、可以打电话给商店,让商店给自己送一把锤子过来,这就是sping的依赖注入;
第一种方法调用者创建被调用者,两者之前无法实现松耦合;
第二种方法调用者无须关心被调用者具体实现过程,只需要找到符合某种标准(接口)的实例,即可使用;
第三种调用者无须自己定位工厂,程序运行到需要被调用者时,系统自动提供被调用者实例。调用者和被调用者通过spring管理。他们的关系由spring维护
model
package com.hongcong.model;
public class People {
private int id;
private String name;
private int age;
public People() {
super();
// TODO Auto-generated constructor stub
}
public People(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "People [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
beans.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="people1" class="com.hongcong.model.People">
<property name="id" value="1"/>
<property name="name" value="小一"/>
<property name="age" value="11"/>
</bean> <!-- 构造方法类型注入 -->
<bean id="people2" class="com.hongcong.model.People">
<constructor-arg type="int" value="2"></constructor-arg>
<constructor-arg type="String" value="小二"></constructor-arg>
<constructor-arg type="int" value="22"></constructor-arg>
</bean> <!-- 构造方法顺序注入 -->
<bean id="people3" class="com.hongcong.model.People">
<constructor-arg index="0" value="3"></constructor-arg>
<constructor-arg index="1" value="小三"></constructor-arg>
<constructor-arg index="2" value="33"></constructor-arg>
</bean>
<!-- 工厂注入 -->
<bean id="peopleFactory" class="com.hongcong.factory.PeopleFactory"></bean>
<bean id="people4" factory-bean="peopleFactory" factory-method="CreatePeople"></bean>
<bean id="people5" class="com.hongcong.factory.PeopleFactory" factory-method="CreatePeopleByStatic"></bean>
</beans>
执行类
package com.hongcong.test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.hongcong.model.People;
public class test {
public static void main(String[] args) {
ClassPathXmlApplicationContext ca = new ClassPathXmlApplicationContext("beans.xml");
//属性注入
People people1 = (People)ca.getBean("people1");
System.out.println(people1);
//构造方法type注入
People people2 = (People)ca.getBean("people2");
System.out.println(people2);
//构造方法顺序注入
People people3 = (People)ca.getBean("people3");
System.out.println(people3);
//非静态工厂
People people4 = (People)ca.getBean("people4");
System.out.println(people4);
//静态工厂注入
People people5 = (People)ca.getBean("people5");
System.out.println(people5);
}
}
工厂
package com.hongcong.factory;
import com.hongcong.model.People;
public class PeopleFactory {
public People CreatePeople(){
People people = new People();
people.setId(4);
people.setName("小四");
people.setAge(44);
return people;
}
public static People CreatePeopleByStatic(){
People people = new People();
people.setId(5);
people.setName("小五");
people.setAge(55);
return people;
}
}
Sping4之依赖注入的更多相关文章
- webapi - 使用依赖注入
本篇将要和大家分享的是webapi中如何使用依赖注入,依赖注入这个东西在接口中常用,实际工作中也用的比较频繁,因此这里分享两种在api中依赖注入的方式Ninject和Unity:由于快过年这段时间打算 ...
- ASP.NET Core 中文文档 第四章 MVC(3.8)视图中的依赖注入
原文:Dependency injection into views 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:孟帅洋(书缘) ASP.NET Core 支持在视图中使用 依赖 ...
- 在WPF中使用依赖注入的方式创建视图
在WPF中使用依赖注入的方式创建视图 0x00 问题的产生 互联网时代桌面开发真是越来越少了,很多应用都转到了浏览器端和移动智能终端,相应的软件开发上的新技术应用到桌面开发的文章也很少.我之前主要做W ...
- MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息
MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...
- .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整-控制反转和依赖注入的使用
再次调整项目架构是因为和群友dezhou的一次聊天,我原来的想法是项目尽量做简单点别搞太复杂了,仅使用了DbContext的注入,其他的也没有写接口耦合度很高.和dezhou聊过之后我仔细考虑了一下, ...
- ASP.NET Core中如影随形的”依赖注入”[下]: 历数依赖注入的N种玩法
在对ASP.NET Core管道中关于依赖注入的两个核心对象(ServiceCollection和ServiceProvider)有了足够的认识之后,我们将关注的目光转移到编程层面.在ASP.NET ...
- ASP.NET Core中如影随形的”依赖注入”[上]: 从两个不同的ServiceProvider说起
我们一致在说 ASP.NET Core广泛地使用到了依赖注入,通过前面两个系列的介绍,相信读者朋友已经体会到了这一点.由于前面两章已经涵盖了依赖注入在管道构建过程中以及管道在处理请求过程的应用,但是内 ...
- 模拟AngularJS之依赖注入
一.概述 AngularJS有一经典之处就是依赖注入,对于什么是依赖注入,熟悉spring的同学应该都非常了解了,但,对于前端而言,还是比较新颖的. 依赖注入,简而言之,就是解除硬编码,达到解偶的目的 ...
- angular2系列教程(八)In-memory web api、HTTP服务、依赖注入、Observable
大家好,今天我们要讲是angular2的http功能模块,这个功能模块的代码不在angular2里面,需要我们另外引入: index.html <script src="lib/htt ...
随机推荐
- ubuntu 14.04升级gcc 4.8到5.3
添加PPA库 #sudo apt-get install software-properties-common #sudo add-apt-repository ppa:ubuntu-toolchai ...
- 【申嵌视频】5-1 ubuntu下安装VMWare Tools工具
[申嵌视频]5-1 ubuntu下安装VMWare Tools工具 适合搭建mini2440, Tiny6410, smart210,Tiny4412, NanoPC-T2, NanoPC-T3, N ...
- opcache 参数说明 --转自https://www.cnblogs.com/tudou1223/p/5362785.html
PHP的opcode缓存又出了新成员(说新不新,也有一段日子了),那就是opcache.新浪微博等都在使用,惠新宸老师强力推荐.本人最近根据官网地址(http://www.php.net/manual ...
- vue 中 相同的路由不会跳转,更改路由的办法
vue 开发的项目,路由跳转的时候,是相同的路由是不会跳转,页面也不会有更新的 有时候 必须要跳转怎么办, 更改一个参数,num,一直在改变.就可以进入了. this.$router.push({ p ...
- GridView更新后获取不到文本框修改后的值
需要在Page_Load事件里为gridview绑定数据时,添加回传判断 if (!IsPostBack) { 绑定数据 }
- php正则讲解 及与 js的正则比较
正则:用于检索字符串的规则: js正则: var reg=/规则/ reg是一个对象,在浏览器下: 所以研究他的属性和方法 属性: global是修饰符,代表全局检索 g ignorecase 忽略大 ...
- case class 和class的区别以及构造器参数辨析
工作中偶然发现Scala构造方法中的参数,无论是否有val/var修饰都可以顺利编译运行,如下: class AA(name: String) class BB(val name: String) 那 ...
- ubuntu16.04下latex环境搭建
背景: 最近需要使用latex做一下简历~~~ 工具: sublime text3 (plugin: latextools) + texlive-full 配置: Preferences -> ...
- 反射 内省 BeanUtil 综合使用
package com.zsphp.domain; public class User { private String userId; private String userName; privat ...
- Python-Thread(通俗易懂)
此类表示在单独的控制线程中运行的活动,有两种方法可以指定该活动,一是将可调用对象传递给构造函数,二是通过覆盖子类中的run()方法. 如果你对线程不太理解,我们可以打个比方,把线程数看作车辆数,我们来 ...