Spring 核心技术(2)】的更多相关文章

本文针对自动装载的一些注解进行描述. 基于注解的容器配置 @Required注解 @Required注解需要应用到Bean的属性的setter方法上面,如下面的例子: public class SimpleMovieLister { private MovieFinder movieFinder; @Required public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; } //…
前文已经描述了Bean的作用域,本文将描述Bean的一些生命周期作用,配置还有Bean的继承. 定制Bean 生命周期回调 开发者通过实现Spring的InitializeingBean和DisposableBean接口,就可以让容器来管理Bean的生命周期.容器会调用afterPropertiesSet()前和destroy()后才会允许Bean在初始化和销毁Bean的时候执行一些操作. JSR-250的@PostConstruct和@PreDestroy注解就是现代Spring应用生命周期回…
前文概述了Spring的容器,Bean,以及依赖的一些信息,本文将描述一下Bean的作用域 Bean的作用域 当开发者定义Bean的时候,同时也会定义了该如何创建Bean实例.这些具体创建的过程是很重要的,因为只有通过对这些过程的配置,开发者才能创建实例对象. 开发者不仅可以控制注入不同的依赖到Bean之中,也可以配置Bean的作用域.这种方法是非常强大而且弹性也非常好的.开发者可以通过配置来指定对象的作用域,而不用在Java类层次上来配置.Bean可以配置多种作用域. Spring框架支持5种…
前面两篇文章描述了IoC容器中依赖的概念,包括依赖注入以及注入细节配置.本文将继续描述玩全部的依赖信息. 使用 depends-on 如果一个Bean是另一个Bean的依赖的话,通常来说这个Bean也就是另一个Bean的属性之一.多数情况下,开发者可以在配置XML元数据的时候使用<ref/>标签.然而,有时Bean之间的依赖关系不是直接关联的.比如:需要调用类的静态实例化器来触发,类似数据库驱动注册.depends-on属性会使明确的强迫依赖的Bean在引用之前就会初始化.下面的例子使用dep…
接上篇:Spring 核心技术(2) version 5.1.8.RELEASE 1.4 依赖 典型的企业应用程序不会只包含单个对象(或 Spring 术语中的 bean).即使是最简单的应用程序也是由很多对象进行协同工作,以呈现出最终用户所看到的有条理的应用程序.下一节将介绍如何从定义多个独立的 bean 到实现对象之间相互协作从而实现可达成具体目标的应用程序. 1.4.1 依赖注入 依赖注入(DI)是一钟对象处理方式,通过这个过程,对象只能通过构造函数参数.工厂方法参数或对象实例化后设置的属…
接上篇:Spring 核心技术(1) version 5.1.8.RELEASE 1.3 Bean概述 Spring IoC 容器管理一个或多个bean,他们都是根据提供的配置元数据(例如 XML 中<bean/>定义)创建的. 在容器内部,这些 bean 定义以 BeanDefinition 对象进行表示,其中包含(以及其他信息)以下元数据: 包限定的类名:通常是 bean 的实际实现类 Bean 行为配置元素,定义 bean 在容器中的行为方式(范围,生命周期回调等) 引用 bean 执行…
接上篇:Spring 核心技术(3) version 5.1.8.RELEASE 1.4.2 依赖关系及配置详情 如上一节所述,你可以将 bean 属性和构造函数参数定义为对其他托管 bean(协作者)的引用,或者作为内联定义的值.Spring 基于 XML 的配置元数据为此目的支持子元素<property/>和<constructor-arg/>. 直接值(基本类型,字符串等) <property/>元素的 value 属性指定一个属性或构造器参数为可读的字符串.Sp…
接上篇:Spring 核心技术(4) version 5.1.8.RELEASE 1.4.5 自动装配协作者 Spring 容器可以自动连接协作 bean 之间的关系.你可以让 Spring 通过检查 ApplicationContext 中的内容自动为 bean 解析协作者(其他bean).自动装配具有以下优点: 自动装配可以显着减少指定属性或构造函数参数的需要.(在本章其他地方讨论的其他机制,如bean模板 ,在这方面也很有价值.) 自动装配可以随着对象的演变更新配置.例如,如果需要向类添加…
接上篇:Spring 核心技术(5) version 5.1.8.RELEASE 1.5 Bean 作用域 创建 bean 定义时,你创建了一种用于创建 bean 定义中定义的类实例的方法.bean定义的设想是一个很重要的方法,因为它意味着,与一个类一样,你可以从以一种方式创建许多对象实例. 你不仅可以控制要插入到以特定 bean 定义创建的对象中的各种依赖项和配置值,还可以控制以特定bean定义创建的对象的作用域.这种方法功能强大且灵活,因为你可以选择通过配置创建的对象的作用域,而不必在 Ja…
接上篇:Spring 核心技术(6) version 5.1.8.RELEASE 1.6 定制 Bean 的特性 Spring Framework 提供了许多可用于自定义 bean 特性的接口.本节将它们分组如下: 生命周期回调 ApplicationContextAware 和 BeanNameAware 其他 Aware 接口 1.6.1 生命周期回调 要与容器的 bean 生命周期管理进行交互,可以实现 Spring InitializingBean 和 DisposableBean 接口…
IT 技术发展太快了,就像浪潮一样一波接着一波,朝你迎面扑来,稍不留神就会被巨浪卷至海底而不得翻身.我们必须要学会抓住那些不变的本质或规律,只有这样才能屹立潮头而不倒,乘风破浪,做这个巨变时代的弄潮儿! 2003年,Rod Johnson 创建了 Spring,我在那一年开始了研究生实习.2005年参加工作,通信行业,主力开发语言是 C/C++.在校勤工俭学时捣鼓过 JSP,2005年前后我开始自学 Spring 搭建个人网站,那时 Java 领域最火的开发框架组合就是:Struts + Spr…
3. Spring Cloud 蝶变重生 Spring 框架的升级演进都是围绕分层架构进行的,从简单到复杂,再回到简单的过程.如果我们没有经历过 Spring 最开始繁琐的配置,然后一步步精简,就根本体会不到为什么会有 Spring Boot.俗话说,乱世造英雄.在新旧时代交替阶段,原来统治世界的旧秩序正在慢慢失效,而新秩序尚未成型,那些建立或者依赖旧秩序的巨头会被惯性推着往前走,他们习惯性地用旧思维或眼光看待世界,所以他们无法正确地理解新时代,这也就是诞生新巨头的机会.随着手机等各种智能终端的…
在介绍Spring中IOC之前,先说说Spring的优势有哪些.首先1.方便解耦,简化开发:就是说将对象间的依赖关系交给Spring进行控制,避免了编码造成的过度耦合.2.AOP编程的支持:方便进行切面编程.3.声明式事务的支持:进行事务的管理,提高开发效率和质量.4.方便程序的测试:可以用非容器的依赖的编程方式进行几乎所有的测试工作.5.方便集成各种优秀的框架:Spring降低各种框架的难度,提供各种框架的支持.6.降低API的难度:Spring对(JDBC,javaMail,远程调用等)进行…
这是第二次看关于Spring的资料,由于刚開始学习Spring的时候是边看视频边学习的,所以更注重的是实现代码,可是对宏观的掌握还是不够,这次主要从宏观的角度来分析一下Spring. 什么是Spring Spring是分层的Java SE/EE应用一站式的轻量级开源框架,以IoC(Inverse of Control:反转控制)和AOP(AspectOriented Programming:面向切面编程)为内核,提供了展现层Spring MVC和持久层Spring JDBC以及业务层事务管理等众…
关于Spring的AOP也是Spring的非常重要的一项技术.大致上可以这样说,面向切面编程,它的出现说明可以在不修改代码的情况下实现对功能的增强.而增强就是给一个方法增加一些功能.AOP主要思想就是把增强的代码可以单独写成一个方法.比如说想对某个方法增加一个检测权限的功能,就可以单独写成一个checkPrivilege方法.可以在需要被增强的方法执行之前,自动的让checkPriviliege方法执行,就像在这个方法前形成一个切面,在切面出安装一个checkPriviliege方法.最终在没有…
BeanFactory是Spring IoC功能的潜在基础,但是现在BeanFactory一般仅仅用于直接集成第三方的框架,对于大多数的Spring用户来说,BeanFactory已经算是一个历史了.BeanFactory以及其相关的接口,包括BeanFactoryAware,InitializingBean,DisposableBean,出于跟大量第三方框架兼容的问题,仍然存在.因为很多时候,第三方组件还不能使用形如@PostConstruct或者@PreDestroy这类的注解,为了继续支持…
在前文的介绍中我们知道,org.springframework.beans.factory包提供了一些基本的功能来管理和控制Bean,甚至通过编程的方式来实现.org.springframework.context包添加了ApplicationContext接口,ApplicationContext接口扩展了BeanFactory接口.ApplicationContext接口扩展了其他的接口来以一种更加面向应用的方式来提供额外的功能.很多开发者喜欢以完全显式声明的方式来使用Application…
本章将描述一下Spring中针对环境的抽象. Environment是一个集成到容器之中的特殊抽象,它针对应用的环境建立了两个关键的概念:profile和properties. profile是命名好的,其中包含了多个Bean的定义的一个逻辑集合,只有当指定的profile被激活的时候,其中的Bean才会激活.无论是通过XML定义的还是通过注解解析的Bean都可以配置到profile之中.而Environment对象的角色就是跟profile相关联,然后决定来激活哪一个profile,还有哪一个…
使用@Configuration注解 @Configuration注解是一个类级别的注解,表明该对象是用来指定Bean的定义的.@Configuration注解的类通过@Bean注解的方法来声明Bean.通过调用注解了@Bean方法的返回的Bean可以用来构建Bean之间的相互依赖关系,可以通过前文来了解其基本概念. 注入inter-bean依赖 当@Bean方法依赖于其他的Bean的时候,可以通过在另一个方法中调用即可. @Configuration public class AppConfi…
基本概念: @Bean和@Configuration Spring中新的基于Java的配置的核心就是支持@Configuration注解的类以及@Bean注解的方法. @Bean注解用来表示一个方法会实例化,配置,并初始化一个新的由Spring IoC容器所管理的对象.其作用等于XML配置中的<beans>标签下的<bean>子标签.开发者可以用@Bean注解来和任何的Spring@Component来联合使用,但是,最常见的情况下,@Bean注解还是应用到注解了@Configur…
从Spring 3.0开始,Spring开始支持JSR-330标准的注解(依赖注入).这些注解和Spring注解扫描的方式是一直的,开发者只需要在classpath中配置相关的jar包即可. 如果开发者使用Maven来管理项目的话,javax.injectartifact在Maven仓库中是可用的(http://repo1.maven.org/maven2/javax/inject/javax.inject/1/).开发者只需要在pom中引用这个依赖即可. <dependency> <g…
Spring管理的组件和Classpath的扫描 在前文描述中使用到的Spring中的Bean的定义,都是通过指定的XML来配置的.而前文中描述的注解的解析则是在源代码级别来提供配置元数据的.在那些例子中,Bean的定义还是在XML中明确的定义的,注解的作用只不过是提供依赖注入.本文将描述Spring通过扫描classpath来自动注册组件.候选的组建就是指一些类能够匹配一些过滤的标准,然后自动注册成为Spring容器之中的Bean.这种方式可以不用在XML中指定Bean的注册配置,而是由开发者…
本文将讨论如何关于在Spring生命周期中扩展Spring中的Bean功能. 容器的扩展 通常来说,开发者不需要通过继承ApplicationContext来实现自己的子类扩展功能.但是Spring IoC容器确实可以通过实现接口来增加一些功能.下面将描述一下这些接口. 通过BeanPostProcessor定义Bean BeanPostProcessor接口定义了一些回调方法,开发者可以通过实现来自己的实例化逻辑,依赖解析逻辑等等.如果开发者只是想在Spring容器完成了实例化,配置以及初始化…
本文将继续前文,针对依赖注入的细节进行描述 依赖注入细节 如前文所述,开发者可以通过定义Bean的依赖的来引用其他的Bean或者是一些值的,Spring基于XML的配置元数据通过支持一些子元素<property/>以及<constructor-arg/>来达到这一目的. 内在值类型(Java Primitives类型,字符串等) 元素<property/>有value属性来对人友好易读的形式配置一个属性或者构造参数.Spring的便利之处就是用来将这些字符串的值转换成指…
本文将继续前文,描述Spring IoC中的依赖处理. 依赖 一般情况下企业应用不会只有一个对象(或者是Spring Bean).甚至最简单的应用都要多个对象来协同工作来让终端用户看到一个完整的应用的.下一部分将解释开发者如何从仅仅定义单独的Bean,到让这些Bean在一个应用中协同工作. 依赖注入 依赖注入是一个让对象只通过构造参数,工厂方法的参数或者配置的属性来定义他们的依赖的过程.这些依赖也是对象所需要协同工作的对象.容器会在创建Bean的时候注入这些依赖.整个过程完全反转了由Bean自己…
IoC容器和Bean简介 这章包括了Spring框架对于IoC规则的实现.Ioc也同DI(依赖注入).而对象是通过构造函数,工厂方法,或者一些Set方法来定义对象之间的依赖的.容器在创建这些Bean对象的时候同时就会注入这些依赖.这个过程是根本上的反转了,不再由Bean本身来控制实例化和定位依赖,而是通过服务定位来控制这个过程,也是IoC(控制反转)的由来. org.springframework.beans和org.springframework.context包是Spring框架IoC容器的…
接上篇:Spring 框架概述 version 5.1.8.RELEASE 这部分参考文档涵盖了 Spring Framework 所有绝对不可或缺的技术. 其中最重要的是 Spring Framework 的控制反转(IoC)容器.在介绍完 Spring 框架的 IoC 容器之后,紧接着全面介绍 Spring 的面向切面编程(AOP)技术.Spring Framework 有自己的 AOP 框架,它在概念上易于理解,并且成功地定位了 Java 企业编程中 AOP 需求的 80% 最佳击球点.…
在SpringAOP开发之前,首先要了解一下这几个概念.Target:目标,通俗的说对哪个类做增强,那个类就是目标.JoinPoint:连接点,在实际开发中可以被增强的点.PointCut:切入点,在实际开发中真正被增强了的点称为PointCut ,对连接点进行拦截的定义.Advice:通知,在拦截到连接点之后,执行的代码,该通知分为前置,后置,环绕,异常,最终.Weaving:织入,把通知加入到连接点的过程.Proxy:代理,增强之后的对象就称为代理.Introduction:引介,指的是类层…
一. spring是什么? 我们知道struts 是 web 框架 (jsp/action/actionfrom).hibernate 是 orm框架,处于持久层. spring 是容器框架,用于配置bean,并维护bean之间关系的框架. spring中非常重要的概念: bean (是java中的任何一种对象 javabean/service/action/数据源./dao ioc(控制反转 inverse of control) di( dependency injection 依赖注入)…
ByeService.java package com.service; public class ByeService { public String sayBye() { return "byebye"; } }   UserService.java package com.service; public class UserService { private String name; private ByeService byeService; public String get…