第二章 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="cn.framelife.spring.dao.impl.UserDaoImpl"></bean>

        如果使用的是id,那么定义的名字中不能包含特殊字符。而使用name,可以使用特殊字符。在结合struts1.x框架的时候,Action一般使用name,因为它配置会有特殊字符存在。

 
    建议一般情况下使用id,而不是name.

 
 bean的命名第一个字母应该是小写。

2.3.2静态工厂的方式实例化

a、使用2.2的例子中的UserDao与UserDaoImpl

public interface UserDao {
	public void save();
}

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

b、写一个UserDao的工厂类,通过一个静态方法生产UserDao的实现类对象

public class UserDaoFactory {
	public static UserDao create(){
		return new UserDaoImpl();
	}
}

c、spring配置文件中配置

<!-- 配置工厂类。工厂类生产UserDao的方法名叫create -->
<bean id="userDaoFromFactory" class="cn.framelife.spring.factory.UserDaoFactory" factory-method="create"></bean>

d、测试

                ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});

		UserDao userDao = (UserDao) context.getBean("userDaoFromFactory");
		userDao.save();

2.3.3使用实例工厂实例化

a、使用2.2的例子中的UserDao与UserDaoImpl

public interface UserDao {
	public void save();
}

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

b、写一个UserDao的工厂类,通过一个非静态方法生产UserDao的实现类对象

public class UserDaoFactory {
	public static UserDao create(){
		return new UserDaoImpl();
	}
}

c、spring配置文件中配置

<!-- 配置工厂类交由spring管理 -->
<bean id="userDaoFactory" 			class="cn.framelife.spring.factory.UserDaoFactory" >
</bean>
<!-- UserDao对象由工厂类的create方法生产  -->
<bean id="userDaoFromFactory"
	factory-bean="userDaoFactory"
	factory-method="create">
 </bean>

d、测试

                ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});

		UserDao userDao = (UserDao) context.getBean("userDaoFromFactory");
		userDao.save();
时间: 2024-08-31 03:44:16

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

网站界面从传统显示屏转到手机屏幕三种可用的迁移方式

传统网站都是以显示器屏幕为基准设计,然而随着手机互联网的普及,越来越多传统网站开始向手机屏幕迁移,本文将讨论三种这个过程实现步骤 由于手机终端纷繁复杂,各种分辨率的屏幕,各种适配不同机型的特殊规则,都对手机网站的设计提出了更多的要求.大屏幕上已有的网站向小屏幕的设备上迁移,是需要经过一些调整的,今天就来探讨三种可用的迁移方式. 拍扁式 手风琴式 棋盘式 一. 第一种 拍扁式 这种形式最简单,也是目前web迁移到wap采用的最多的一种形式,就是把主流的1:2:1三栏布局的web网页拍扁成一个线性的

JSP应用技巧:实现三种页面跳转方式的比较

js|比较|技巧|页面 使用JSP大约有下列三种跳转方式: 1. response.sendRedirect();2. response.setHeader("Location","");3. <jsp:forward page="" /> 经过试验得到下面的一些规则: 一. response.sendRedirect() 此语句前不允许有out.flush(),如果有,会有异常: java.lang.IllegalStateExce

jsp三种页面跳转方式的比较

使用JSP大约有下列三种跳转方式: 1. response.sendRedirect(); 2. response.setHeader("Location",""); 3. 经过试验得到下面的一些规则: 一. response.sendRedirect() 此语句前不允许有out.flush(),如果有,会有异常: java.lang.IllegalStateException: Cant sendRedirect() after data has committe

SQL Server三种导入导出数据方式比较

当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验.净化和转换时,将会面临很大的挑战.幸好SQL Server为我们提供了强大.丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理. 在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理:调用命令行工具bcp处理数据:使用数据转换服务(DTS)对数据进行处理.这三种方法各有其特点,下面就它们的主要特点进行比较. 一.使用方式的比

第二章 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 每次从容器中获取到的都是一个新的实例.相当于每次都

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

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

第二章 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