spring3

singleton

prototype

request

session

global session

后三种只适用于容器为webaware applicationContext  例如XmlWebApplicationContext

当 后三种范围bean 被依赖时候,需要添加   <aop:scoped-proxy/>   cglib代理

<?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.xsd">

<!-- an HTTP Session-scoped bean exposed as a proxy -->

<bean id="userPreferences" class="com.foo.UserPreferences" scope="session">

<!-- instructs the container to proxy the surrounding bean -->

<aop:scoped-proxy/>

</bean>

<!-- a singleton-scoped bean injected with a proxy to the above bean -->

<bean id="userService" class="com.foo.SimpleUserService">

<!-- a reference to the proxied userPreferences bean -->

<property name="userPreferences" ref="userPreferences"/>

</bean>

</beans>

jdk 动态代理。

<bean id="userPreferences" class="com.foo.UserPreferences" scope="session">

<aop:scoped-proxy proxy-target-class="false"/>

</bean>

<bean id="userManager" class="com.foo.UserManager">

<property name="userPreferences" ref="userPreferences"/>

</bean>

可以自定义范围,继承org.springframework.beans.factory.config.Scope

bean 创建之前做一些事情 的方法:

<bean id="exampleInitBean" class="examples.ExampleBean" init-method="init"/>

public class ExampleBean {

public void init() {

// do some initialization work

}

}

这种不如上一种好。

<bean id="exampleInitBean" class="examples.AnotherExampleBean"/>

public class AnotherExampleBean implements InitializingBean {

public void afterPropertiesSet() {

// do some initialization work

}

}

同样 bean 销毁之后做一些事情怎么办?

<bean id="exampleInitBean" class="examples.ExampleBean" destroy-method="cleanup"/>

public class ExampleBean {

public void cleanup() {

// do some destruction work (like releasing pooled connections)

}

}

不如上一种好

<bean id="exampleInitBean" class="examples.AnotherExampleBean"/>

public class AnotherExampleBean implements DisposableBean {

public void destroy() {

// do some destruction work (like releasing pooled connections)

}

}

每个bean 都去指定初始化方法很麻烦,有一种简单方法,就是

public class DefaultBlogService implements BlogService {

private BlogDao blogDao;

public void setBlogDao(BlogDao blogDao) {

this.blogDao = blogDao;

}

// this is (unsurprisingly) the initialization callback method

public void init() {

if (this.blogDao == null) {

throw new IllegalStateException( "The [blogDao] property must be set.");

}

}

}

<beans default-init-method="init">

<bean id="blogService" class="com.foo.DefaultBlogService">

<property name="blogDao" ref="blogDao" />

</bean>

</beans>

父子定义:

<bean id="inheritedTestBeanWithoutClass" abstract="true">

<property name="name" value="parent"/>

<property name="age" value="1"/>

</bean>

<bean id="inheritsWithClass" class="org.springframework.beans.DerivedTestBean"

parent="inheritedTestBeanWithoutClass" init-method="initialize">

<property name="name" value="override"/>

<!-- age will inherit the value of 1 from the parent bean definition-->

</bean>

spring3

时间: 2024-08-02 03:28:01

spring3的相关文章

SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结

一 开发环境 1.动态web工程 2.部分依赖 java代码: hibernate-release-4.1.0.Final.zip hibernate-validator-4.2.0.Final.jar spring-framework-3.1.1.RELEASE-with-docs.zip proxool-0.9.1.jar log4j 1.2.16 slf4j -1.6.1 mysql-connector-java-5.1.10.jar hamcrest 1.3.0RC2 ehcache 2

在Spring3中使用注解(@Scheduled)创建计划任务

Spring3中加强了注解的使用,其中计划任务也得到了增强,现在创建一个计划任务只需要两步就完成了: 创建一个Java类,添加一个无参无返回值的方法,在方法上用@Scheduled注解修饰一下: 在Spring配置文件中添加三个<task:**** />节点: 最后说明一下,第一步创建的Java类要成为Spring可管理的Bean,可以直接写在XML里,也可以@Component一下 计划任务类: /** * com.zywang.spring.task.SpringTaskDemo.java

[转]Spring3核心技术之事务管理机制

原文地址:http://chouyi.iteye.com/blog/1675199 Spring对事务的解决办法其实分为2种:编程式实现事务,AOP配置声明式解决方案. http://jinnianshilongnian.iteye.com/blog/1496953 Spring提供了许多内置事务管理器实现,常用的有以下几种: DataSourceTransactionManager:位于org.springframework.jdbc.datasource包中,数据源事务管理器,提供对单个ja

在Spring3 MVC中五步配置集成注解方式Hibernate3

最近在搞一个WEB项目,以前在公司做项目用的都是JPA做ORM持久层,这次这个项目是我自己接的,我决定改一下,用Hibernate3来做ORM持久层.于是我网上搜索了Hibernate3怎么配置集成到Spring3 MVC上,发现千奇百怪,而且很多都是不是基于注解方式配置,显然那些文字上面的配置方式已经跟如今的Hibernate3注解支持方式脱节了,于是我决定自己搞一把,首先说一下网上那些配置方式的不好的地方,很多文章都提到要jdbc.properties文件与Hibernate config文

maven3+struts2+spring3+jpa2重构itcat巴巴运动网(前38讲)

和maven官方例子一样,我学习教程也采用了父工程来管理各个阶段尝试不同的开源组件开发的模块. \babasportrefactoring为父工程 \babasportrefactoring\babasportbluetripe为参考struts官方例子后重构的代码,同步更新到38讲: \babasportrefactoring\babasportcompact 为清理了非必要测试的子model2,Spring3.05 + Strtus2 + JPA(Hibernate) + Sitemesh

Spring3.x中的分布式事务配置

因为用Spring3.x已经有一段时间了,原来的事务配置基本上是基于同一数据源(可以用一个连接,在数据操作上指定多个数据库的操作,也能够进行回滚,事务的提交,基本上实现了分布式的事务处理),今天特地用atomikos进行了事务配置,进行了简单的测试,因为atomikos这个配置数据源时,自带了连接池,对于连接池的性能没有进行专门的测试,把原来的c3p0的事务配置去掉了,这个有待明天进行一次测试. 所依赖Java开源包,用maven自动下载: 我的配置 <properties> <atom

整合Struts2.2+Spring3.0

2014-08-08 学习李刚老师的j2ee整合struts2+spring3 JAR包链接 http://download.csdn.net/detail/u010393809/7732235 项目outline 1.引入JAR包,上面已经贴了JAR包下载链接 2.配置Struts2,只需要引入struts2必需的那几个包,此时暂时不要引入struts2-spring-plugin-2.2.1.jar,不然会抛出javaPointerNull的异常 配置web.xml; 配置struts.xm

《Spring3.X企业应用开发实战》学习笔记--SpringMVC

本篇是<Spring3.X企业应用开发实战>,陈雄华 林开雄著,电子工业出版社,2012.2出版"的学习笔记的第三篇,关于SpringMVC. Spring MVC 3.0和早期版本相比拥有了一个质的飞跃,全面支持REST风格的WEB编程.完全注解驱动.处理方法签名非常灵活.处理方法不依赖于Servlet API等. 由于Spring MVC框架在后头做了非常多的隐性工作,所以想深入掌握Spring MVC 3.0并非易事,本章我们在学习Spring MVC的各项功能时,还深入其内部

Spring3之MVC

形式-视图-控制器(MVC)是UI规划中常见的规划形式, 该形式区别运用程序中的形式.视图和控制器三个人物,消除了事务逻辑与UI的耦合.形式担任封装视图展现的运用数据.视图应该只显现数据,不包括任何事务逻辑.控制器担任承受用户恳求并调用后端服务进行事务逻辑.处置之后,后端服务能够回来某些数据供视图显现.控制器搜集这些数据并预备视图的显现形式.MVC形式的中心思维是分离事务逻辑与UI,使它们能够独立修正,互不影响. 对与Web端的开发,从最开端的CGI,model1,以及现在的由model2演化而

Struts2+Spring3+MyBatis3整合以及Spring注解开发

 分类: Web(2)  版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在做一个SpringMVC+spring+MyBatis的项目,突然想起以前自己要搭建一个Struts2+Spring+IBatis的框架,但是没成功,正好看见培训时候老师给的千里之行的开源项目.于是将这个项目提供的SQL加入到了自己的数据库中(所以数据和项目名用的是qlzx),打算以后做练习的时候用这个数据库.那么接下来问题来了(不要说某翔或者不约,不是那个问题):我有了数据库和数据,想要搭建一个网站,该怎么做