《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>
相关文章推荐
- ubuntu,jdk安装成功后,点击eclipse,提示信息A Java RunTime Environment (JRE) or Java Development Kit (JDK)
- Java IO
- Java----之“关键字”
- 圣思园java se培训总结(50)(类集的总结)
- spring MultiActionController 简单配置
- Ubuntu make 及多版本JDK安装与切换
- 浅析Java中的访问权限控制
- Java Nio 三、Java NIO Channel
- 浅谈Java中的对象和引用
- java webservice 用户验证 (服务端 + 客户端)
- java web开发 高并发处理
- java学习感悟
- spring beans源码解读
- JAVA环境变量配置的作用
- commons之集合与队列JAVA140
- Spring-Aop详细教程
- JAVA设计原则
- Java开发中的23种设计模式详解
- Spring 框架的架包分析、功能作用、优点
- JAVA中内部类和匿名内部类的区别,分别在什么时候使用它们?