spring的依赖注入DI(IOC)

时间:2022-03-11 21:46:25

1、手动注入

(1)set注入

public class UserService {

    private UserDao userDao;

    public void setUserDao(UserDao dao){
this.userDao = dao;
}
}
    <bean id="userDao1" class="com.spring1.dao.UserDao"></bean>

    <bean id="userService" class="com.spring1.service.UserService">
<property name="userDao" ref="userDao1"></property>
</bean>

通过userService对象的setUserDao方法,将userDao1注入进去。

public class User {
int id;
String name;
String password;
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 String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
public class UserDao {

    public void setShowUser(User user){
System.out.println(user.getId()+":"+user.getName()+":"+user.getPassword());
}
}
    <bean id="user" class="com.spring1.entity.User">
<property name="id" value="1"></property>
<property name="name" value="zhangsan"></property>
<property name="password" value="123456"></property>
</bean> <bean id="userDao1" class="com.spring1.dao.UserDao">
<property name="showUser" ref="user"></property>
</bean>

在bean配置中对user初始化,userDao1通过自己的setShowUser方法将user注入

spring的依赖注入DI(IOC)

(2)构造方法注入

    <bean id="userDao1" class="com.spring1.dao.UserDao">
</bean> <bean id="testService" class="com.spring1.service.UserService">
<constructor-arg name="userDao1" ref="userDao1"></constructor-arg>
</bean>
    @Test
public void test() { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService service = (UserService) ac.getBean("testService");
service.showUser();
}
public class UserService {

    private UserDao userDao;

    public UserService(UserDao userDao1){
this.userDao = userDao;
} public void showUser(){
System.out.print("ok-------------");
} }

构造函数参数的名字,要与类的构造参数的名字对应。

2、自动注入

    <bean id="userDao2" class="com.spring1.dao.UserDao"></bean>

    <bean id="testService" class="com.spring1.service.UserService" autowire="byName">
</bean>

id=userDao2,下边的setUserDao2==userDao2是一样的。

public class UserService {

    private UserDao userDao;

    public void setUserDao2(UserDao userDao1){
this.userDao = userDao1;
} public void showUser(){
userDao.showUser();
} }

byname自动注入的时候,就要顶一个一个name=类中的参数名字的bean

spring的依赖注入DI(IOC)的更多相关文章

  1. Atitit js中的依赖注入di ioc的实现

    Atitit js中的依赖注入di ioc的实现 全类名(FQCN)为标识符1 混合请求模式1 使用类内  builder  即可..2 Service locator method走ok拦2 Jav ...

  2. 【学习笔记】 使用XML配置和注解实现Spring的依赖注入DI (2-3-2)

    Spring的四个核心组件 1.beans Bean是包装应用程序自定义对象Object的 Object中保存数据 2.core  3.context 一个Bean的关系集合 4.expression ...

  3. Spring&period;Net-DI依赖注入和Ioc控制反转

    Spring.Core作为整个Spring框架的基础,实现了依赖注入的功能.Spring框架的其它模块都要依赖或扩展该模块. IObjectFactory接口,该接口实现了工厂模式,使用它可以帮我们创 ...

  4. spring 依赖注入(IOC DI)

    依赖注入(IOC DI) 依赖注入的两种方式: 1. set注入 Spring要求使用set注入方式的时候,Bean需要提供一个无参数的构造方法.并提供一个属性的setter方法.例如: packag ...

  5. spring&lpar;3&rpar;------控制反转&lpar;IOC&rpar;&sol;依赖注入&lpar;DI&rpar;

    一.spring核心概念理解 控制反转: 控制反转即IoC (Inversion of Control).它把传统上由程序代码直接操控的对象的调用权交给容器.通过容器来实现对象组件的装配和管理. 所谓 ...

  6. Spring框架学习笔记(1)——控制反转IOC与依赖注入DI

    Spring框架的主要作用,就是提供了一个容器,使用该容器就可以创建并管理对象.比如说Dao类等,又或者是具有多依赖关系的类(Student类中包含有Teacher类的成员变量) Spring有两个核 ...

  7. 浅析&OpenCurlyDoubleQuote;依赖注入&lpar;DI&rpar;&sol;控制反转&lpar;IOC&rpar;”的实现思路

    开始学习Spring的时候,对依赖注入(DI)——也叫控制反转(IOC)—— 的理解不是很深刻.随着学习的深入,也逐渐有了自己的认识,在此记录,也希望能帮助其他入门同学更深入地理解Spring.本文不 ...

  8. 依赖注入&lpar;DI&rpar;与服务容器&lpar;IoC&rpar;

    参考文章:http://www.yuansir-web.com/2014/03/20/%E7%90%86%E8%A7%A3php-%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A ...

  9. 控制反转IOC与依赖注入DI【转】

    转自:http://my.oschina.net/1pei/blog/492601 一直对控制反转.依赖注入不太明白,看到这篇文章感觉有点懂了,介绍的很详细. 1. IoC理论的背景我们都知道,在采用 ...

随机推荐

  1. 快速卸载VS2015的办法

    1.以管理员身份运行CMD: 2.在CMD里输入F:\>vs_enterprise.exe /uninstall /force

  2. win7或win2008 R2 被远程登录日志记录 系统日志

    事件查看器 → Windows 日志 → 安全 (win7 事件查看器 打开方式 :计算机 右键   → 管理  → 计算机管理 → 系统工具 → 事件查看器 windows server 2008 ...

  3. RONOJ 6今明的预算方案(有依赖的背包)

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今 ...

  4. SqlSever基础 union 与 union all的区别,即 重复项是否全部显示

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  5. BZOJ 2436 Noi嘉年华(优化DP)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2436 题意:有一些活动,起始时间持续时间已知.有两个场地.每个活动最多只能在一个场地举行 ...

  6. &lbrack;你必须知道的&period;NET&rsqb;第二十九回:&period;NET十年(上)

    发布日期:2009.05.08 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. /// <summary> /// 本文部分内容,已 ...

  7. paramiko学习

    1. ssh简介 2. ssh私有key/共有key的区别 3. paramiko的常规使用

  8. &num;if和&num;ifdef区别

    #if  是要去判断, 跟值有关 #ifdef  只要定义了即可, 就会走下面的代码, 不管值是0还是1 所以一般都是用#ifdef DEBUG调试

  9. MyBatis面对Oracle数据库如何实现主键列自增长

    因为Oracle数据库而言 不能够像SqlServer和MySql一样主键自增 而且MyBatis也没有提供直接的主键自增方法 所以我们自己使用查询语句来实现自增 实现代码: <insert i ...

  10. PHP开发丨3个简单的方法处理emoji表情

    一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串.这是怎么回事呢?原来是因为Mysql的utf8字符集是3字节的,而emo ...