您的位置:首页 > 编程语言 > Java开发

《spring in action》笔记(一)

2015-12-13 18:22 453 查看

《spring in action》笔记(一)

该篇为读书随笔记录,适合自己记录查看,不适合给大家学习,所以没有过多讲解描述,在此申明:

2015.12.13

创建spring配置 :

典型的Spring XML配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<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-3.0.xsd> <!--Bean declarations go here -->
</beans>


命名空间用途
aop为声明切面以及将@AspectJ注解的类代理为Spring切面提供了配置元素
beans支持声明Bean,是Spring最核心也是最原始的命名空间
context为配置Spring应用上下文提供了配置元素,包括自动检测和自动装配Bean,注入非Spring直接管理的对象
jee提供了与Java EE API的集成,例如JNDI和EJB
jms为声明消息驱动的pojo提供了配置元素
lang支持配置groovy,JRuby或BeanShell等脚本实现的Bean
mvc启用Spring MVC 的能力,例如面向注解的控制器,视图控制器和拦截器
oxm支持Spring的对象到XML映射配置
tx提供声明式实物配置
util提供各种各样的工具类元素,包括把集合配置未Beans,支持属性占位符元素

通过构造器注入 :

<bean id="duck" class="com.springinaction.springidol.Juggler">
<constructor-arg value="15">
</bean>


将设要注入一个对象 Poem,我们不能使用value属性为第二个参数赋值,因为Poem不是简单类型。取而代之的是,我们使用ref属性来将ID为sonnet29的Bean引用传递给构造器。

<bean id="duck" class="com.springinaction.springidol.Juggler">
<constructor-arg value="15">
<constructor-arg ref="sonnet29">
</bean>


通过工厂方法创建Bean

Stage类作为单例类来实现,确保没有其他方式可以创建多个stage的实例。必须提醒的是,Stage没有一个公开的构造方法,取而代之的是,静态方法getInstance()每次被调用时都返回相同的实例。

在Spring中如何把没有公开构造方法的Stage配置未一个Bean呢?

幸好,元素有一个factory-method属性,允许我们调用一个指定的静态方法,从而代替构造方法来创建一个类的实例。

<bean id="Stage" class="com.springinaction.springidol.Stage" factory-method="getInstance">
</bean>


Bean的作用域 :

所有的 Spring Bean 默认都是单例。当容器分配到一个Bean时,它总是返回Bean的同一个实例。但有时我们需要每次请求时都获得唯一的Bean实例,那如何覆盖Spring默认的单例配置呢?

<bean id="Stage" class="com.springinaction.springidol.Stage" scope="prototype">
</bean>


作用域定义
singleton在每一个Spring容器中,一个Bean定义只有一个对象实例(默认)
prototype允许Bean的定义可以被实例化任意次(每次调用都创建一个实例)
request在一次HTTP请求中,每个Bean定义对应一个实例。该作用域仅在基于Web的Spring上下文(例如Spring MVC)中才有效
session在一个HTTP Session中,每个Bean定义对应一个实例。该作用域仅在基于Web的Spring上下文(例如 Spring MVC)中才有效
global-session在一个全局 HTTP Session中,每个Bean定义对应一个实例。该作用域仅在Portler上下文中才有效

初始化和销毁Bean

<bean id="Stage" class="com.springinaction.springidol.Stage" init-method="turnOnLights" destroy-method="turnOffLights"/>


如果在上下文定义的很多Bean都拥有相同名字的初始化方法和销毁方法,你没必要为每一个Bean声明init-method和destroy-method属性。幸运的是,你可以使用元素的init-method和destroy-method属性:

<?xml version="1.0" encoding="UTF-8"?>
<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-3.0.xsd init-method="turnOnLights"
destroy-method="turnOffLights">
...
</beans>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: