`
从此醉
  • 浏览: 1047469 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

Spring3.0 入门进阶(1):从配置文件装载Bean

 
阅读更多

Spring 已经盛行多年,目前已经处于3.0阶段,关于Spring的概念介绍性的东西网上已经很多,本系列博客主要是把一些知识点通过代码的方式总结起来,以便查阅.

作为入门,本篇主要介绍Bean的加载

工具类

package com.eric.introduce;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.eric.introduce.di.ConferenceRoom;
import com.eric.introduce.di.DummyConfig;
import com.eric.introduce.di.Knight;
import com.eric.introduce.di.Performer;
import com.eric.introduce.di.RescueDamselQuest;

/**
 * @author Eric
 * 
 */
public class IntroduceUtil {

	private static final String CONFIG_FILE = "com/eric/introduce/introduce.xml";
	private static ApplicationContext context = new ClassPathXmlApplicationContext(
			CONFIG_FILE);

	/**
	 * 通过ClassPathXmlApplication获得Bean实例
	 */
	public static void demonstrateDIByClassContent() {

		Knight knight = (Knight) context.getBean("knight");
		knight.embarkOnQuest();
	}

	/**
	 * 默认情况下Context总是返回同一个对象
	 */
	public static void demonstrateSingleStonClassContent() {
		Knight knight1 = (Knight) context.getBean("knight");
		Knight knight2 = (Knight) context.getBean("knight");
		System.out.println(knight1);
		System.out.println(knight2);

	}

	/**
	 * Spring中的singleSton只是正对一个context而言,不同的上下文会有不同的实例
	 */
	public static void demonstrateSingleStonInContent() {
		ApplicationContext anotherContext = new ClassPathXmlApplicationContext(
				CONFIG_FILE);
		Knight knight1 = (Knight) context.getBean("knight");
		Knight knight2 = (Knight) anotherContext.getBean("knight");
		System.out.println(knight1);
		System.out.println(knight2);

	}

	/**
	 * 通过factoryMethod 加载Bean
	 * 
	 **/
	public static void demonstrateLoadBeanByFactory() {
		DummyConfig dummyConfig = (DummyConfig) context.getBean("config");
		System.out.println(dummyConfig.getConfigurationMap());
	}

	/**
	 * 如果通过factoryMethod的方式加载Bean,即使是不同的Context,任然返回的是同一个Bean实例
	 * 
	 **/
	public static void demonstrateLoadBeanByFactory2() {
		ApplicationContext anotherContext = new ClassPathXmlApplicationContext(
				CONFIG_FILE);
		DummyConfig dummyConfig = (DummyConfig) context.getBean("config");
		DummyConfig dummyConfig2 = (DummyConfig) anotherContext
				.getBean("config");
		System.out.println(dummyConfig);
		System.out.println(dummyConfig2);
	}

	/**
	 * 但Bean定义了Scope设置为Prototype后,每次会实例化不同的实例
	 */
	public static void demonstratePrototypeBean() {
		RescueDamselQuest quest1 = (RescueDamselQuest) context
				.getBean("prototypeQuest");
		RescueDamselQuest quest2 = (RescueDamselQuest) context
				.getBean("prototypeQuest");
		System.out.println(quest1);
		System.out.println(quest2);

	}

	/**
	 * 验证init以及destory方法
	 * 
	 **/
	public static void demonstrateInitAndDestory() {
		ConferenceRoom conferenceRoom = (ConferenceRoom) context
				.getBean("conferenceRoom");
		conferenceRoom.use();
	}

	/**
	 * 验证了注入集合的几种方法
	 */
	public static void demostrateInjectionPropertieWays() {
		Performer performer = (Performer) context
				.getBean("instrumentPerformer");
		performer.performer();
		performer.eatFruit();
		performer.printProperties();
	}

}

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
	http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

	<bean id="knight" class="com.eric.introduce.di.BraveKnight">
		<constructor-arg ref="quest"></constructor-arg>
	</bean>
	<bean id="quest" class="com.eric.introduce.di.RescueDamselQuest" />
	<bean id="minstrel" class="com.eric.introduce.aop.Minstrel" />
	<bean id="config" class="com.eric.introduce.di.DummyConfig"
		factory-method="getInstance" />

	<bean id="prototypeQuest" class="com.eric.introduce.di.RescueDamselQuest"
		scope="prototype" />

	<bean id="conferenceRoom" class="com.eric.introduce.di.ConferenceRoom"
		init-method="beforeUse" destroy-method="afterUse" lazy-init="true" />

	<bean id="guitar" class="com.eric.introduce.di.Guitar" />
	<bean id="apple" class="com.eric.introduce.di.Apple" />
	<bean id="orange" class="com.eric.introduce.di.Orange" />

	<bean id="instrumentPerformer" class="com.eric.introduce.di.InstrumentPerformer">
		<property name="name" value="Eric" />
		<property name="age" value="26" />
		<property name="instrument" ref="guitar" />
		<property name="privateInstrument">
			<bean class="com.eric.introduce.di.Piano"></bean>
		</property>
		<property name="favFruit">
			<list>
				<ref bean="apple" />
				<ref bean="orange" />
			</list>
		</property>
		<property name="properties">
			<props>
				<prop key="SPORT">FOOTBALL</prop>
				<prop key="CITY">WUHAN</prop>
			</props>
		</property>
	</bean>
	<aop:config>
		<aop:aspect ref="minstrel">
			<aop:pointcut id="embark" expression="execution(* *.embarkOnQuest(..))" />
			<aop:before pointcut-ref="embark" method="singleBeforeQuest"></aop:before>
			<aop:after pointcut-ref="embark" method="singleAfterQuest" />
		</aop:aspect>
	</aop:config>
</beans>

由于功能都比较简单,通过调用方法以及配置文件应该就可以看出用法,所以只列出了部分文件.

如果需要完整事例,请下载附件

分享到:
评论

相关推荐

    强烈推荐 Spring3.0 入门 代码下载

    写一个最简单的spring示例,使用spring3.0的框架,实现简单应用,索性放在这里供还没入门的spring爱好者参考,初步感受一下spring应用(spring高手就不必看了,这里并没有涉及高级特性,比如与ORM框架的整合,事务...

    Spring3.0 配置文件中加载Properties文件的小例子

    Spring3.0 配置文件中加载Properties文件的小例子

    spring3.0帮助文档(包含REST资料)

    Spring 3.0重要特性总结如下: ◆Spring表达式(SpEL):用于bean定义的核心表达式分析器 ◆对基于注释的组件的更多支持:允许通过元注释创建注释的“快捷方式” ◆标准化的依赖性注入注释:对Java中依赖性注入的...

    spring3.0 全部jar包

    spring3.0 全部jar包 spring3.0 全部jar包 spring3.0 全部jar包

    Spring 3.0就这么简单_Part3.pdf

    《Spring 3.0就这么简单》语言简洁,实例丰富,可帮助读者迅速掌握使用Spring...Spring 3.0就这么简单_Part1.pdf Spring 3.0就这么简单_Part2.pdf Spring 3.0就这么简单_Part3.pdf Spring 3.0就这么简单_Part4.pdf

    Spring 3.0就这么简单源代码

    不仅讲解了Spring 3.0的基础知识,还深入讨论了Spring IoC容器、Spring AOP、使用Spring JDBC访问数据库、集成Hibernate、Spring的事务管理、Spring MVC、单元测试、敏捷开发技术等内容,帮助读者快速入门并可以立刻...

    spring3.0jar包

    spring3.0 开发包,开发J2ee,值得拥有

    一些Spring的入门与进阶教程

    一些Spring的入门与进阶教程: 包括:spring培训资料.ppt,spring中文教程pdf.pdf,spring基础教程.rar,Eclipse_Spring_入门书籍.pdf

    spring 3.0配置示例

    spring 3.0的 简单配置 文件上传 ajax(注解)

    spring3.0两种事务管理配置

    spring3.0两种事务管理配置

    spring3.0的API

    spring3.0的API,spring3.0的API

    spring3.0 xsd文件

    spring3.0 xsd文件 spring3.0 xsd文件 spring3.0 xsd文件 spring3.0 xsd文件 spring3.0 xsd文件 spring3.0 xsd文件

    spring3.0 jar包

    spring3.0 jar包

    Spring 3.0就这么简单

    Spring 3.0 作者:陈雄华,林开雄

    spring3.0 api

    spring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 apispring3.0 api

    spring3.0 项目源码

    spring3.0 项目源码 spring3.0 注解 的学习,spring mvc 完整项目, 请你好好学习一下!

    Struts2.1+Spring3.0+JPA1.0 .pdf

    Struts2.1+Spring3.0+JPA1.0 .pdfStruts2.1+Spring3.0+JPA1.0 .pdfStruts2.1+Spring3.0+JPA1.0 .pdfStruts2.1+Spring3.0+JPA1.0 .pdfStruts2.1+Spring3.0+JPA1.0 .pdfStruts2.1+Spring3.0+JPA1.0 .pdf

    spring3.0+spring mvc3.0+mybaits3.0

    spring3.0+spring mvc3.0+mybaits3.0

Global site tag (gtag.js) - Google Analytics