`
从此醉
  • 浏览: 1044784 次
  • 性别: 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,值得拥有

    spring3.0 xsd文件

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

    一些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 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