说明:

UserManagerImp是设值注入,UserManagerImp2是构造注入

接口不注入,也就是在Spring配置文件中没有接口的<bean>,但是定义的时候是用接口

private IUserDao userDao;
IUserManager userManager2=(IUserManager) factory.getBean("userManager2");

类都注入,①UserManagerImp和UserManagerImp2属于实现类

     ②UserDaoImp是Dao类也要注入

     前者①中有属性userDao,userDao可以通过设值和构造俩中方法注入

     后者②中没有属性,所以只写了<bean>

1.文件

<?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-3.0.xsd">
<bean name="userManager" class="com.wangcf.manager.UserManagerImp">
<!--设值注入 -->
<property name="userDao" ref="userDao"></property>
</bean>
<bean name="userManager2" class="com.wangcf.manager.UserManagerImp2">
<!-- 构造注入 -->
<constructor-arg ref="userDao"/>
</bean> <bean name="userDao" class="com.wangcf.Dao.UserDaoImp"></bean>
</beans>

2.Dao

package com.wangcf.Dao;

public interface IUserDao {
public void addUser();
}
package com.wangcf.Dao;

public class UserDaoImp implements IUserDao{
public void addUser(){
System.out.println("UserDaoImp addUser...");
}
}

3.manager

package com.wangcf.manager;

public interface IUserManager {
public void addUser();
}
package com.wangcf.manager;

import com.wangcf.Dao.IUserDao;

public class UserManagerImp implements IUserManager{

    private IUserDao userDao;
//设值注入
public void setUserDao(IUserDao userDao) {
this.userDao = userDao;
}
public void addUser(){
System.out.println("UserManagerImp addUser...");
this.userDao.addUser();
} }
package com.wangcf.manager;

import com.wangcf.Dao.IUserDao;

public class UserManagerImp2 implements IUserManager{

    private IUserDao userDao;

    //构造注入
public UserManagerImp2(IUserDao userDao) {
// TODO Auto-generated constructor stub
this.userDao=userDao;
} @Override
public void addUser() {
// TODO Auto-generated method stub
System.out.println("UserManagerImp2 addUser...");
this.userDao.addUser();
} }

4.test

package com.wangcf.test;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.wangcf.manager.IUserManager; import junit.framework.TestCase; public class UserManagerTest extends TestCase{ public void testAddUser(){
BeanFactory factory=new ClassPathXmlApplicationContext("applicationContext.xml");
IUserManager userManager=(IUserManager) factory.getBean("userManager");
userManager.addUser();
System.out.println("=============");
IUserManager userManager2=(IUserManager) factory.getBean("userManager2");
userManager2.addUser();
}
}

5.输出

Spring接口编程_设值注入和构造注入的更多相关文章

  1. Spring基于构造函数和设值函数的依赖注入

    基于构造函数的依赖注入 我们知道,bean标签中指定的类会进行初始化,这个初始化过程中自然会调用构造函数,那我们也可以利用这个构造函数完成依赖注入. 先创建一个类: public class Text ...

  2. Spring注入值得2种方式:属性注入和构造注入

    Spring是一个依赖注入(控制反转)的框架,那么依赖注入(标控制反转)表现在那些地方了? 即:一个类中的属性(其他对象)不再需要手动new或者通过工厂方法进行创建,而是Spring容器在属性被使用的 ...

  3. spring--设置注入VS构造注入

    1.在传统的程序设计中,调用亲自创建被调用者的实例,即由程序控制“对象之间的依赖关系”,这种方式的耦合度比较高:控制反转就是将由程序控制的“对象间的依赖关系”转交给Ioc容器来进行控制,被调用者的实例 ...

  4. 【Spring实战】—— 5 设值注入

    本篇主要讲解了Spring的最常用的功能——依赖注入. 注入的方式,是使用Getter Setter注入,平时大多的编程也都是使用这种方法. 举个简单的例子,还是表演者. 表演者有自己的属性,年龄或者 ...

  5. 【Spring学习笔记-2.1】Spring的设值注入和构造注入

    设值注入: 先通过无参数的构造函数创建一个Bean实例,然后调用对应的setter方法注入依赖关系: 配置文件: <?xml version="1.0" encoding=& ...

  6. Spring学习(3)---Spring设值注入和构造注入

    (一)设值注入就是指要被注入的类中定义有一个setter()方法,并在参数中定义需要注入的对象.简单的看个例子. 建一个User类: package com.ioc; public class Use ...

  7. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring DI(依赖注入)的实现方式属性注入和构造注入

    依赖注入(Dependency Injection,DI)和控制反转含义相同,它们是从两个角度描述的同一个概念. 当某个 Java 实例需要另一个 Java 实例时,传统的方法是由调用者创建被调用者的 ...

  8. Spring 依赖注入 基于构造函数、设值函数、内部Beans、集合注入

    Spring 基于构造函数的依赖注入_w3cschool https://www.w3cschool.cn/wkspring/t7n41mm7.html Spring 基于构造函数的依赖注入 当容器调 ...

  9. 7.28.1 Spring构造注入还是设置注入

    1. 构造方法注入代码如下:public UserManagerImpl(UserDao userDao) {                                              ...

随机推荐

  1. A convenient way of installing(compiling) VIM with YCM

    Ah, while I am still downloading LLVM from github(very slow.. and very large in size). I come with m ...

  2. Swift 学习笔记 (一)

    原创: 转载请注明出处 Extention try catch rxSwift internal  public  private var  let as       as? 强转 ? ! didSe ...

  3. a:link visited hover active

    CSS中a:link.a:visited.a:hover.a:active的用法:建议:尽可能的手写代码,可以有效的提高学习效率和深度.在网页设计中,设计美观的超链接效果可以增强网站的用户体验,可能会 ...

  4. HDU ACM 1495 非常可乐(广搜BFS)

    非常可乐 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

  5. HDU - 1205 I NEED A OFFER!

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1203 题意: 该题要求得到一份offer的最大概率,在例子中的0.44 = 1-(1-0.2)*(1- ...

  6. 如何参与Hibernate-ORM项目

    1.注册 hibernate jira账户,hibernate中的issue和bug都会在此论坛发布 注册地址:https://hibernate.onjira.com 2.创建Hibernate-O ...

  7. js 判断网页类型

    <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>标题页</title ...

  8. 剑指offer 重建二叉树

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  9. 集合问题 离线+并查集 HDU 3938

    题目大意:给你n个点,m条边,q个询问,每条边有一个val,每次询问也询问一个val,定义:这样条件的两个点(u,v),使得u->v的的价值就是所有的通路中的的最长的边最短.问满足这样的点对有几 ...

  10. HTML 引用Css样式的四种方式

    不才,只知道HTML引用CSS样式有四种方式,内部引用和外部引用各两种,因为老是忘记细节,记下了随时翻阅亦可方便如我般的初学者 内部引用方式1: 直接在标签内用 style 引用,如: <div ...