在Spring的标签中有一scope属性,用于指定创建出的实例的作用域。在默认情况下该值为singleton,也就是同一个实体对象在内存中始终都只存在一个。另一个值为prototype,当然,不用说其意与前一个恰恰相反。
在Java中“==”使用于判断两个对象所指的内存地址是否相等的,所以写段简单的代码即可查看两种作用域的效果。
public static void main(String[] args) {
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
MyBean bean1 = (MyBean) factory.getBean("myBean");
MyBean bean2 = (MyBean) factory.getBean("myBean");
if(bean1 == bean2){
System.out.println("sigleton");
}else{
System.out.println("prototype");
}
}
不指定scope运行一下看看,然后将scope改为prototype看看吧。
2009.01.26 / 标签:
Spring,
Spring开源框架 / 分类:
J2EE技术
Spring确实给人一种格外清新,爽朗的感觉。仿佛微雨后的绿草从,讨人喜欢,又蕴藏着勃勃生机。他大大简化了Java企业级开发,提供了强大、稳定的功能,又没有带来额外的负担。让人们使用Spring做每一件事情的时候都有得体而优雅的感觉。Spring有两个主要目标:一是让现有技术更易于使用,二是促进良好的编程习惯。
Spring是一个全面的解决方案。但他坚持一个原则:不重新造轮子。已经有较好解决方案的领域,Spring绝不做重复性的实现,比如对象持久化和OR映射,Spring只是对现有JDBC、Hibernate、JPA等技术提供支持,使之更易用,而不是重新做一个实现。
Spring依然在不断发展和完善,但基本与核心的部分已经相当稳定,包括Spring的依赖注入容器、AOP实现和对持久化层的支持。

上图描述了SpringFramework包含的内容。其中最基础的是Spring Core,即Spring作为依赖注入容器的部分。Spring AOP是基于Spring Core的,典型的一个应用即声明式事务。Spring DAO对JDBC提供了支持,简化了JDBC编码,同时使代码更健壮。Spring ORM部分对Hibernate等OR映射框架提供了支持。Spring可以在Java SE中使用,也可以在Java EE中使用,Spring Context为企业级并发提供了便利和集成的工具。Spring Web是为Spring在Web应用程序中使用提供的支持。Struts作为MVC实现是现在实际上的标准,但编码略显笨拙,Spring提供了一个稍微简单的Spring Web MVC框架,但应用不多。
到这里,大家应该对Spring有了一个大致的印象了,但只有了解其依赖注入实现的时候,才可以说开始了解Spring了,只有对其AOP实现有一定认识了的时候,才能说自己“学会”Spring了。