一:实例化bean
构造方法实例化
package com.spring.chapter2.service;
public interface Fruit {
public void eat();
}
package com.spring.chapter2.service.impl;
import com.spring.chapter2.service.Fruit;
public class Apple implements Fruit {
public void eat() {
System.out.println("吃苹果!");
}
}
package com.spring.chapter2.service.impl;
import com.spring.chapter2.service.Fruit;
public class Orange implements Fruit {
private String name;
public Orange() {
super();
}
public Orange(String name) {
super();
this.name = name;
}
@Override
public void eat() {
System.out.println("吃桔子");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
配置文件: //chapter2.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-2.5.xsd">
<bean id="fruit" class="com.spring.chapter2.service.impl.Orange" />
</beans>
测试类:
public class Test {
public static void main(String[] args) {
ApplicationContext acx = new ClassPathXmlApplicationContext(
"chapter2.xml");
Fruit fruit =(Fruit)acx.getBean("fruit");
fruit.eat();
}
}
spring容器在实例化对象的时候,需要用到无参的构造方法.记住,提供一个无参的构造.
二:使用静态工厂方法实例化
public class FruitFactory {
public static Fruit getInstanceApple() {
return new Apple();
}
public static Fruit getInstanceOrange() {
return new Orange();
}
public static Fruit getInstance(int type) {
if(type == 1){
return new Apple();
}else if (type == 2){
return new Orange();
}else{
return null;
}
}
}
配置文件: //chapter2.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-2.5.xsd">
<bean id="apple" class="com.spring.chapter2.model.FruitFactory" factory-method="getInstanceApple" />
<bean id="orange" class="com.spring.chapter2.model.FruitFactory" factory-method="getInstanceOrange" />
<bean id="fruit" class="com.spring.chapter2.model.FruitFactory" factory-method="getInstance">
<constructor-arg type="int" value="2" />
</bean>
</beans>
测试类:
public class Test {
public static void main(String[] args) {
ApplicationContext acx = new ClassPathXmlApplicationContext(
"chapter2.xml");
Apple apple =(Apple)acx.getBean("apple");
apple.eat();
Orange orange =(Orange)acx.getBean("orange");
orange.eat();
Fruit fruit =(Fruit)acx.getBean("fruit");
fruit.eat();
}
}
三:Bean的作用域
作用域 |
描述 |
singleton |
在每个Spring IoC容器中一个bean定义对应一个对象实例。 |
prototype |
一个bean定义对应多个对象实例。 |
request |
在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例, 它们依据某个bean定义创建而成。该作用域仅在基于web的Spring ApplicationContext情形下有效。 |
session |
在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。 |
global session |
在一个全局的HTTP Session中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web的Spring ApplicationContext情形下有效。 |
singleton单例示例
<bean id="fruit" class="model.Apple" scope="singleton"/>
scope="singleton"是默认值,设于不设都可以,每次容器都会给同一个对象给你
prototype非单例示例
<bean id="fruit" class="model.Apple" scope="prototype"/>
配置此范围后,每次向容器索取对象时,容器会创建一个新的对象给你.
四:延迟初始化bean
lazy-init="true"
lazy-init="false"
<bean id="fruit" class="model.Apple" lazy-init="false" />
不要和scope属性一起使用.
true:延时,不立即创建
false:不延时,立即创建
五:类初始化和销毁自动调用的方法
<bean id="fruit" class="model.Apple" init-method="init"
destroy-method="destroy" />
init-method="init":指定方法名,在对象实例化以后,自动调用
destroy-method="destroy":指定方法名,在容器关闭以后,自动调用
分享到:
相关推荐
在"Spring第二章"中,我们将深入学习Spring框架的核心概念、主要功能以及如何在实际项目中使用它们。 首先,我们要理解什么是依赖注入。依赖注入是Spring框架的一个关键特性,它允许我们解耦组件间的依赖关系。通过...
《Spring.Net框架实战:第二章示例代码解析》 在深入学习任何技术框架时,实践总是最好的老师。Spring.Net作为一款强大的.NET平台上的轻量级应用程序框架,它提供了丰富的依赖注入(Dependency Injection,DI)和...
在本资源中,“经典Java EE企业应用开发实战第二章源码”是一个针对Java EE企业级应用开发的学习资料,主要关注的是实际操作和编程实践。Java EE(Enterprise Edition),也被称为Java SE(Standard Edition)的扩展...
标题中的"第二章 Spring4 IOC"表明我们即将探讨的是关于Spring框架第四版本中的控制反转(Inversion of Control,简称IOC)这一核心概念。IOC是Spring框架的基础,它使得应用程序的组件能够脱离具体的依赖关系,提高...
在这个源代码包中,"02"可能代表第二章的内容,这通常包括了更深入的SSH框架集成示例,如创建MVC控制器、配置实体类与数据库表的映射、实现事务处理等。开发者可以通过这些示例学习如何组织项目结构、编写DAO(Data ...
在《轻量级Java EE企业应用实战第三版》中,第二章主要探讨了Java EE的基础概念和核心组件,以及如何构建轻量级的企业级应用程序。本章源码提供了实际操作的示例,帮助读者深入理解Java EE开发的关键技术。下面我们...
9. **实战演练**:通常,第二章会包含一些基础的实战例子,比如创建第一个Spring项目,配置Bean,使用AOP,或者搭建一个简单的Spring MVC Web应用,以帮助读者巩固理论知识并实践操作。 通过深入学习这一章的内容,...
在本压缩包“spring4.x第二章代码”中,我们主要关注的是Spring框架的第二章内容,这通常涉及到Spring的核心概念和技术。Spring是Java企业级应用开发中的一个关键框架,它提供了一个全面的编程和配置模型,以简化...
【标题】"springlive-第二章代码"是一个与Spring框架相关的Eclipse项目,它涵盖了Spring框架的第二章学习内容。这个项目可能包含了用于演示和练习Spring核心概念的源代码,如依赖注入、AOP(面向切面编程)以及Bean...
* page:Bean 的缺省使用范围,Scope 值为 page 的 Bean 能在包含“”元素的 JSP 文件及此文件中的所有静态包含文件中使用,直到页面执行完毕向客户端发回响应或转到另一个文件为止。 * request:作用于任何相同请求...
第9章 网络客户端及组件 139 第11章 JSP技术 165 第12章 JSP页面中的JavaBean组件 178 第13章 在JSP页面中自定义标签 182 第14章 事务 202 一.什么是事务 202 二.容器管理事务 203 三.Bean管理事务 208 四.企业...
第二部分 企业Spring 第5章 使用数据库 5.1 Spring的数据访问哲学 5.1.1 了解Spring数据访问的异常体系 5.1.2 数据访问的模板化 5.1.3 使用DAO支持类 5.2 配置数据源 5.2.1 使用JNDI数据源 5.2.2 使用数据源...
本章主要介绍Spring框架中的控制反转(Inversion of Control,IoC)思想,以及依赖注入(Dependency Injection,DI)与依赖查找(Dependency Lookup,DL)两种实现IoC的方式。此外,还涉及了Spring程序开发的基本...
第二部分企业spring 第5章使用数据库 5.1spring的数据访问哲学 5.1.1了解spring数据访问的异常体系 5.1.2数据访问的模板化 5.1.3使用dao支持类 5.2配置数据源 5.2.1使用jndi数据源 5.2.2使用数据源连接池 ...
第二部分 企业Spring 第5章 使用数据库 5.1 Spring的数据访问哲学 5.1.1 了解Spring数据访问的异常体系 5.1.2 数据访问的模板化 5.1.3 使用DAO支持类 5.2 配置数据源 5.2.1 使用JNDI数据源 5.2.2 使用数据源...
这个"使用SSM框架开发企业级应用第二章全部"的资源可能涵盖了一个完整的教程或课程的第二部分,旨在教授如何利用SSM框架来构建高效稳定的企业级应用程序。虽然描述中提到的更新情况并不影响我们对SSM框架核心概念的...
第二章可能包含状态管理和会话bean的示例,演示了如何在分布式环境中实现业务服务。 5. **JPA与Hibernate**: JPA是Java EE的ORM(Object-Relational Mapping)规范,简化了数据库操作。源代码可能使用Hibernate...
在《JSP范例宝典》的第二章中,我们深入探讨了...通过深入学习《JSP范例宝典》第二章的内容,开发者能够掌握JSP的基础,并具备开发简单Web应用的能力。随着对JSP的进一步探索,可以逐步构建出复杂、高效的企业级应用。
Spring源码深度解析第二版 Spring是一款广泛应用于Java企业级应用程序的开源框架,旨在简化Java应用程序的开发和部署。Spring框架的核心主要包括了IoC容器、AOP、MVC框架等模块。 第1章 Spring整体架构和环境搭建 ...