`

Spring基础入门一:基于XML配置完成Spring对Bean的实例化

阅读更多

一、基于XML配置的Spring对Bean的实例化:有三种方式:类的构造器,静态工厂,实例工厂

<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">

	<!-- Spring三种实例化Bean之一:使用类构造器实例化 -->
	<bean id="personService"
		class="base.service.imple.PersonServiceImple">
	</bean>

	<!-- Spring三种实例化Bean之二:使用静态工厂方法实例化 -->
	<bean id="personService2"
		class="base.factory.StaticBuildBeanFactroy"
		factory-method="createPersonService">
	</bean>

	<!-- Spring三种实例化Bean之三:使用实例工厂方法实例化 -->
	<bean id="buildBeanFactory" class="base.factory.BuildBeanFactory"></bean>
	<bean id="personService3" factory-bean="buildBeanFactory"
		factory-method="createPersonService">
	</bean>
</beans>

 Bean的接口:

package base.service;

public interface PersonService {

	public void save();

}

 Bean的实现:

public class PersonServiceImple implements PersonService {

	// 一个普通的方法,可以在beans.xml设置成它为在构造方法执行完后就执行的方法
	public void init() {
		System.out.println("初始化方法");
	}

	// 一个普通的方法,可以在beans.xml设置成它为在Spring容器关闭后执行的方法
	// (若该Bean的scope为prototype时则不会执行)
	public void destroy() {
		System.out.println("销毁方法");
	}

	// 构造方法(用来显示实例始化了)
	public PersonServiceImple() {
		System.out.println("实例化了...");
	}

	public void save() {
		System.out.println("PersonServiceImple的save()方法");
	}
}

 两个Bean工厂如下:

/**
 * 实例工厂构造Bean
 * 
 * @author 张明学
 */
public class BuildBeanFactory {

	public PersonService createPersonService() {
		return new PersonServiceImple();
	}
}
 
/**
 * 静态工厂构造Bean
 * 
 * @author 张明学
 */
public class StaticBuildBeanFactroy {
	public static PersonService createPersonService() {
		return new PersonServiceImple();
	}
}

 测试:

public static void main(String[] args) {
		// Spring 容器初始化
		ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
		// 多个Spring配置文件可以作为一个数组
		// context = new ClassPathXmlApplicationContext(new String[] {
		// "beans.xml" });
		PersonService personService = null;
		//personService = (PersonService) context.getBean("personService");
		//personService = (PersonService) context.getBean("personService2");
		personService = (PersonService) context.getBean("personService3");
		personService.save();
	}

 Spring2.5为Bean提供了几中模式:singleton(默认配置),prototype,request,session,global session

还可以设置Bean实例的时机,可以在容器启动时构造实例(默认配置)也可在第一次使用时构造实例。

还有一些其配置如下:

<!-- 
		scope默认为:singleton 单例模式
			 设置为:prototype 每次得到一个新的实例对象
			   还有:request,session,global session
		lazy-init: true	 表示:该Bean延迟初始化,不是Spring容器初始化时就初始化
				   false(默认值) 表示:不以该Bean延迟初始化,即Spring容器初始化时就初始化
				   在beans设置default-lazy-init可以为该beans里所有的bean设置一个默认的lazy-init的值
		设置了scope为“prototype”时:lazy-init无论是true还是false都是延迟初始化
		
		init-method 设置为:该bean中的某个方法在构造方法执行完就执行的方法
		destroy-method 设置为:在Spring空器关闭之后执行的方法(若将该bean的scope设置为prototype则不会执行)
	-->
	<bean id="personService4"
		class="base.service.imple.PersonServiceImple" scope="prototype"
		lazy-init="true" init-method="init" destroy-method="destroy">
	</bean>
   

测试如下:

public static void main(String[] args) {
		AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
		PersonService p1 = (PersonService) ctx.getBean("personService4");
		PersonService p2 = (PersonService) ctx.getBean("personService4");
		/**
		 * 在默认情况下:scope为singleton单例模式 prototype每次会得到一个新的实例
		 */
		System.out.println(p1 == p2);
		// 关闭Spring的容器
		ctx.close();
	}
 

 

分享到:
评论
10 楼 yadan 2010-06-20  
我觉得挺好啊
9 楼 zzpxingfu 2010-06-08  
leijing 写道
希望LZ能够继续写好。

Spring 事务管理
8 楼 xiaojing3517 2010-06-07  
马上就杯具了。。。。
7 楼 qiyueguxing 2010-06-07  
这种贴也能在主页上!Google一搜一大把!
类似的没有技术含量的东西直接写在自己博客里好了。
6 楼 xiaobojava 2010-06-07  
我会坚持的!最近很忙。
5 楼 freeza 2010-06-07  
同求楼主头像!
4 楼 leijing 2010-06-07  
希望LZ能够继续写好。
3 楼 leepengyu 2010-06-06  
LZ的头像 有没有大的? 用来做Eclipse的启动画面   不错  有的话发一份
2 楼 leepengyu 2010-06-06  
.....其实我衷心的希望不要再发XXX入门一...XXX学习笔记一...  然后就没有下文了  此类帖子一是多, 二是鱼龙混杂, 如要坚持发, 希望能够保证高质量和持续性。
1 楼 joehe 2010-06-06  
配数据库连接,密码怎么己加密的方式配置?

相关推荐

    spring bean XML配置入门

    一旦XML配置加载到Spring容器中,容器将根据配置创建Bean实例,并按照定义进行初始化、依赖注入,最后完成Bean的生命周期管理。 10. **实践操作**: 在实际开发中,我们可以使用Eclipse的Spring插件来简化Bean...

    Spring实例化Bean顺序

    4. **启动后处理器(BeanPostProcessor)**:这些是特殊类型的Bean,它们在所有常规Bean实例化之后,但初始化之前进行处理。它们的实例化顺序由`@Order`注解决定,或者通过实现`Ordered`接口来控制。 5. **...

    Spring项目bean实例化代码

    在Spring 3.0及以上版本,还可以通过注解配置实现Bean实例化,如使用`@Component`、`@Service`、`@Repository`和`@Controller`注解标记类为Bean,以及`@Autowired`进行依赖注入。此外,`@Bean`注解可以用于Java配置...

    Spring的三种实例化Bean的方式

    本文将详细介绍Spring中的三种主要的Bean实例化方式:XML配置、注解配置以及Java配置。 ### 1. XML配置 XML配置是Spring早期版本中最常见的Bean定义方式。在`spring_first`目录下的配置文件(如`beans.xml`)中,...

    Spring 基础和入门:Struts2+Spring整合

    **Spring基础和入门** Spring框架是Java开发中的一个核心组件,尤其在企业级应用中广泛使用。它提供了一个全面的编程和配置模型,用于简化Java应用程序的开发,特别是Web应用程序。Spring的核心特性包括依赖注入...

    Spring Bean重复执行两次(实例被构造两次)问题分析

    同时,对源码进行调试也是一个有效的排查手段,可以追踪到Bean实例化的具体位置,找出问题的根源。 综上所述,Spring Bean重复执行两次的问题通常是由于配置错误、依赖注入循环、初始化回调的不当使用、静态工厂...

    Spring框架xml注解配置方式实例

    这是Spring的配置文件,定义了bean的实例化、装配和初始化。在`ApplicationContext-1.xml`中,我们可以声明bean的定义,包括bean的类名、属性、依赖关系等。Spring框架通过读取这个文件来创建和管理对象。XML配置...

    基于xml的SpringAOP实例

    在基于XML的配置方式下,Spring AOP提供了直观且灵活的声明式方法来实现这些关注点的分离,使得业务逻辑代码更为简洁。 在Spring AOP中,我们首先需要定义一个切面(Aspect),它包含了若干个通知(Advice)。通知...

    spring-demo:基于xml配置的spring框架的基本演示

    Spring IoC容器根据XML配置文件中的定义来实例化对象并管理它们。 - **AOP(面向切面编程,Aspect Oriented Programming)**:Spring提供了对AOP的支持,可以方便地实现日志记录、事务管理等功能,通过定义切面来...

    一个Spring的入门实例;一个Struts的入门实例

    3. **配置 Spring**:创建一个 `applicationContext.xml` 配置文件,声明 Bean 及其依赖。 4. **注入 Bean**:在需要使用 Bean 的地方,通过 `@Autowired` 注解注入 Bean。 5. **编写测试**:使用 `...

    一本很不错的关于spring入门的书籍

    - **Spring配置**:学习XML配置和基于注解的配置,以及如何创建和管理bean。 - **AOP基础**:了解切面、通知、目标对象等概念,以及如何创建和使用切面。 - **Spring MVC**:学习控制器、模型、视图和处理器映射的...

    spring,springmvc,mybatis基于xml文件整合(2)

    在本教程中,我们将深入探讨如何在Java Web开发中整合Spring、Spring MVC和MyBatis框架,特别是关注基于XML配置的Mapper接口方式。这三种技术的集成为开发高效、可维护的Web应用提供了强大支持。 首先,Spring是...

    struts2-spring4-hibernate4_xml配置的框架

    在XML配置中,Spring4的配置文件如`applicationContext.xml`用于定义Bean的实例化、装配、生命周期管理等。比如,可以定义Service层和DAO层的Bean,并设置它们之间的依赖关系。 **Hibernate4** 是一个对象关系映射...

    Spring XML 的配置实例

    本实例将深入探讨 Spring 的 XML 配置机制,了解如何通过 XML 文件来管理和组织应用的组件。 XML 配置是 Spring 的早期核心特性,它允许开发者声明式地定义 Bean 的定义、依赖关系以及其它服务。Bean 是 Spring ...

    模拟spring的xml配置文件注入

    在Spring框架中,XML配置文件是核心组成部分,它定义了bean的实例化、依赖注入以及其他的框架设置。本文将深入探讨如何模拟Spring的XML配置文件注入,并通过SAXBuilder解析XML文件来实现这一过程。 首先,理解XML...

    Spring — 基于Java类的配置 代码实例

    基于Java类的配置方法和基于XML或基于注解的配置方式相比,前者通过代码的方式更加灵活地实现Bean的实例化及Bean之间的装配,但后面两者都是通过配置声明的方式,在灵活性上要稍逊一些,但是配置上要更简单一些。

    SpingIOC注入实例化bean

    无论是通过XML配置还是注解方式,Spring都能灵活地实例化和管理bean,使得开发者可以专注于业务逻辑,而不是对象的创建和管理。在实际项目中,理解和掌握Spring IOC的这些概念和用法是至关重要的。

    spring bean的生命周期

    - **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...

    详解Spring中Bean的生命周期和作用域及实现方式

    2. 实例化:在这个阶段,Bean已经实例化,但是还没有进行任何其他操作。 3. 设置BeanName:在这个阶段,Bean已经实例化,并且已经设置了名称。 4. 设置BeanFactory:在这个阶段,Bean已经实例化,并且已经设置了...

    实例化Spring bean的两种工厂方法

    在Spring框架中,bean的实例化是其核心功能之一,它允许我们管理应用程序中的对象生命周期。本篇将详细探讨两种工厂方法——实例工厂方法和静态...在实际项目中,应根据实际情况权衡利弊,选择最适合的Bean实例化策略。

Global site tag (gtag.js) - Google Analytics