7.5 Spring容器中的Bean 7.5.1 Bean的基本定义和Bean别名 <beans.../>元素是Spring配置文件的根元素,该元素可以指定如下属性: default-lazy-init : 指定该<beans.../> 元素下配置的所有Bean默认的延迟初始化行为. default-merge : 指定该<beans.../> 元素下配置的所有Bean默认的merge行为. default-autowire : 指定该<beans.../>…
7.12 Spring 3.0 提供的表达式语言(SpEL) Spring表达式语言(简称SpEL)是一种与JSP 2 的EL功能类似的表达式语言,它可以在运行时查询和操作对象图.支持方法调用和基本字符串模板函数. SpEL 可以独立于Spring容器使用------只是当成简单的表达式语言来使用:也可以在Annotation或XML配置中使用SpEL,这样可以充分利用SpEL简化Spring的Bean配置. 7.12.1 使用Expression接口进行表达式求值. Spring的SpEL 可…
7.6 Spring 3.0 提供的Java配置管理 Spring 允许使用Java类进行配置管理,可以不使用XML来管理Bean,以及Bean之间的依赖关系. Interface :Person package edu.pri.lime._7_6.bean; public interface Person { void userAxe(); } Interface : Axe package edu.pri.lime._7_6.bean; public interface Axe { Stri…
7.3 Spring 的核心机制 : 依赖注入 Spring 框架的核心功能有两个. Spring容器作为超级大工厂,负责创建.管理所有的Java对象,这些Java对象被称为Bean. Spring容器管理容器中Bean之间的依赖关系,Spring使用一种被称为“依赖注入”的方式来管理Bean之间的依赖关系. 7.3.1 理解依赖注入 当某个java对象需要调用另一个Java对象的方法时,在传统模式下通常有如下两种做法: 1. 原始做法 : 调用者主动创建被依赖对象,然后在调用被依赖对象的方法.…
7.9 容器中Bean的生命周期 Spring可以管理singleton作用域的Bean的生命周期,Spring可以精确地知道该Bean何时被创建,何时被初始化完成.容器何时准备销毁该Bean实例. 对于prototype作用域的Bean,Spring容器仅仅负责创建,当容器创建了Bean实例之后,Bean实例完全交给容器代码管理,容器不再跟踪其声明周期.每次客户端情i去prototype作用域的Bean时,Spring都会残生一个新的实例. 对于singleton作用域的Bean,Spring…
7.8 深入理解容器中的Bean 7.8.1 抽象Bean与子Bean 把多个<bean.../>配置中相同的信息提取出来,集中成配置模版------这个配置模版并不是真正的Bean,因此Spring不应该创建该配置模版,于是需要为该<bean.../>配置增加abstract=“true” ------这就是抽象Bean. 抽象Bean不能被实例化,Spring容器不会创建抽象Bean实例.抽象Bean的价值在于被继承,抽象Bean通常作为父Bean被继承. 抽象Bean只是配置…
7.4 使用 Spring 容器 Spring 有两个核心接口:BeanFactory 和 ApplicationContext,其中ApplicationContext 是 BeanFactory 的子接口.它们都可代表 Spring 容器,Spring 容器是生成 Bean 实例的工厂,并管理容器中的Bean. Java 程序面向接口编程,无须关心 Bean 实例的实现类:但 Spring 容器负责创建 Bean 实例,因此必须精确知道每个 Bean 实例的实现类,故Spring 配置文件必…
<spring扩展点之三:Spring 的监听事件 ApplicationListener 和 ApplicationEvent 用法,在spring启动后做些事情> <服务网关zuul之七:zuul中的动态刷新路由配置> <ApplicationEvent事件机制源码分析> <JDK自带的观察者模式> 背景 在开发工作中,用到spring cloud的zuul,zuul中的动态刷新zuul的路由信息中用到了事件监听,事件监听也是设计模式中 发布-订阅模式.…
[Spring]Junit加载Spring容器作单元测试 阅读目录 >引入相关Jar包 > 配置文件加载方式 > 原始的用法 > 常见的用法 > 引入相关Jar包 一.均需引入所需的包 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope&g…
本文将讨论如何关于在Spring生命周期中扩展Spring中的Bean功能. 容器的扩展 通常来说,开发者不需要通过继承ApplicationContext来实现自己的子类扩展功能.但是Spring IoC容器确实可以通过实现接口来增加一些功能.下面将描述一下这些接口. 通过BeanPostProcessor定义Bean BeanPostProcessor接口定义了一些回调方法,开发者可以通过实现来自己的实例化逻辑,依赖解析逻辑等等.如果开发者只是想在Spring容器完成了实例化,配置以及初始化…