第二章 IoC 构造器注入

UserDao与UserDaoImpl:

public interface UserDao {
    public void save();
}  

public class UserDaoImpl implements UserDao {
    public void save() {
        System.out.println("保存用户...");
    }
}  

UserService接口及其实现类UserServiceImpl:

public interface UserService {
    public void addUser();
}  

public class UserServiceImpl implements UserService {
	private UserDao userDao;
	private String username;

	//这里的成员变量不需要setter方法。这是与setter注入不同的地方	

	public UserServiceImpl(UserDao userDao, String username) {
		this.userDao = userDao;
		this.username = username;
	}

	public void addUser() {
		System.out.println(username);
		userDao.save();
	}
}

配置:

<bean id="userDao" class="cn.framelife.spring.dao.impl.UserDaoImpl"></bean>
	<!-- index表示的是构造方法中的第几个参数。从0开始。 -->
	<bean id="userService" class="cn.framelife.spring.service.impl.UserServiceImpl">
		<constructor-arg index="0" ref="userDao"></constructor-arg>
		<constructor-arg index="1" value="zhangsan"></constructor-arg>
	</bean>
时间: 2024-07-28 14:46:34

第二章 IoC 构造器注入的相关文章

第二章 IoC Annotation注入

1.命名空间 使用Annotation的方式,需要在spring的配置文件中配置命名空间.命名空间中,隐式地注册了多个对注解进行解析处理的处理器. a.引入context命名空间 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.spri

第二章 IoC 概念与简单的使用

2.1 IoC的概念         Inverseof Control,控制反转是Spring容器的内核,AOP.声明式事务等功能都是在此基础上进行的.         IoC主要功能是依赖关系的转移.应用的本身不负责依赖对象的创建和维护,而是由Spring容器负责.控制权就由应用转移到了外部容器.         IoC的主要功能由控制反转来解释并不是很好理解.所以提出了新的概念DependencyInjection.         DI依赖注入,调用类对某一接口实现类的依赖关系由第三方(

第二章 IoC 三种实例化Bean的方式

2.3.1使用类构造器实例化(最经常使用) 类似2.2中的使用:http://blog.csdn.net/p_3er/article/details/9091577 <bean id="userDao" class="cn.framelife.spring.dao.impl.UserDaoImpl"></bean> 注:这里的id也可以换成name <bean name="userDao" class="c

第二章 IoC Bean的初始化与延迟加载

在默认情况下,Spring的ApplicationContext容器在启动的时候,会自动实例化所有singleton的Bean并缓存在容器中.虽然启动时会花费一些时间,但带来两个好处: 1.对Bean提前实例化操作会及早发现一些潜在的配置问题: 2.Bean以缓存的方式保存,当运行期使用到该Bean的时候无需再实例化,加快运行的效率. 如果用户不希望容器启动的时候提前实例化singleton的Bean,可以通过lazy-init属性进行控制: <bean id="userDao"

第二章 IoC Spring自动扫描和管理Bean

通过Spring容器自动扫描和管理Bean,我们不再需要在配置文件中使用<bean>标签管理Bean. 2.9.1引入context命名空间 如何引入命名空间及命名空间的写法已经在之前的章节中详细说过.具体可参考以下: http://blog.csdn.net/p_3er/article/details/9231307 2.9.2打开扫描功能 <context:component-scan base-package="cn.framelife.spring"/>

第二章 IoC Bean的作用域

作用域的配置(scope的内容): <bean id="userDao" class="cn.framelife.spring.dao.impl.UserDaoImpl" scope="singleton"></bean> 2.4.1singleton单例(默认) 整个Spring容器服务中只有一个Bean对象.一般情况下都使用这种作用域. 2.4.2 prototype 每次从容器中获取到的都是一个新的实例.相当于每次都

浅析如何在ObjectBuilder2中用动态方法进行构造器注入

一.前言 在我看来,OB2是一个用来构建和管理对象的开放性的框架,我们可以根据自己的需求去 扩展它,例如扩展它可以实现依赖注入(如MS的Unity).我认为OB2最大的亮点之一是在提供 了对象创建框架的同时能够管理对象以及对象之间的依赖关系,控制对象构建和销毁过程, 这样对象的创建就不是直接去使用new而对象的销毁也不仅仅只靠GC了.要说OB2所使用的设 计模式,我觉得可以认为是大量使用策略(Strategy)模式并辅以责任链模式,通过责任链组 织对象创建或销毁的次序及步骤. 二.关键组成部分

第二章 单元测试的基本概念和核心技法

第二章 单元测试的基本概念和核心技法 2.1 良好的单元测试--定义 我们已经了解了程序员需要单元测试,下面我们来给单元测试作一个完整的定义: ● 定义: 单元测试是一段自动执行的代码,它调用被测类或被测方法,然后验证关于被测类或被测方法逻辑行为的假设确实成立.单元测试几乎总是用单元测试框架(unit testing framework)来写就的,单元测试是易于写就.执行快速.完全自动化.值得依赖.易于阅读并易于维护的. 这个定义有点长,但是它却包含了大量重要信息: ● 单元测试的测试重点是被测

Knockout应用开发指南 第二章:监控属性(Observables)

原文:Knockout应用开发指南 第二章:监控属性(Observables) 关于Knockout的3个重要概念(Observables,DependentObservables,ObservableArray),本人无法准确表达它的准确含义,所以暂定翻译为(监控属性.依赖监控属性和监控数组),如果有好的建议请指正,多谢. 1     创建带有监控属性的view model Observables Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪