Spring framework
文章平均质量分 76
易生一世
spring-petclinic-graphql开源项目的贡献者
展开
-
Spring MVC - RAML Spec Synchroniser简介
1. Spring MVC - RAML Spec Synchroniser是一个工具,用以在Spring MVC应用和RAML文件定义之间进行同步。即Spring MVC应用的变化,可以通过该工具同步体现在RAML文件的定义中;反之亦然。该工具包含如下3个独立的组件:springmvc-raml-pluginspringmvc-raml-parser(忽略),解析Spring Annotatio...原创 2017-07-12 15:16:16 · 1171 阅读 · 0 评论 -
Spring框架事务管理之二:事务管理器与事务API的配置
本文介绍针对JDBC、Hibernate和JTA等事务API,Spring框架中如何进行XML配置。1. 基于JDBC事务API的Spring XML配置JDBC事务API依赖于具体的数据源,所以首先要在Spring的XML配置文件中设置数据源如下:<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" de...原创 2016-04-12 09:58:31 · 735 阅读 · 0 评论 -
Spring框架事务管理之一:JavaEE事务与Spring事务
常见的,提供事务实现的API:JTA、JPA、JDO、JDBC、Hibernate等。注意,无论是JavaEE,还是Spring,都只是在这些事务实现API的基础上,提供了事务管理的功能。1.JavaEE的事务管理JavaEE提供的CMT和BMT两种事务管理方式,CMT是声明式事务管理,BMT是编程式事务管理。事实上,CMT底层依赖JTA实现事务的管理。JavaEE通过CMT支持EJB的全局事务管...原创 2016-04-11 14:16:07 · 1713 阅读 · 0 评论 -
Spring ORM与Hibernate的集成开发详解
在Java应用中,存在多种数据访问API,如JDBC、JPA、JDO和Hibernate等。为了便于使用这些数据访问API进行应用开发,Spring框架提供了Spring DAO,其带来的优势如下:统一的应用接口统一的异常层次结构DataAccessException统一的资源标注@Repository统一的事务管理@Transactional下面以Hibernate为例,介绍Spring DAO...原创 2016-04-19 11:31:59 · 574 阅读 · 0 评论 -
Spring Bean的配置方式及标注(Annotation)配置
Spring框架为Spring Bean的配置提供了多种方式,常见的有通过XML文件的配置,通过标注(Annotation)的配置和基于Java的容器配置。其中基于Java的容器配置往往见于独立运行的Java应用,对于Web应用常见的是XML文件的配置和标注(Annotation)配置。这里重点介绍Web应用的标注(Annotation)配置。1. Spring Bean的标注(Annotatio...原创 2016-04-06 11:08:58 · 2298 阅读 · 0 评论 -
Spring Bean在XML配置中的父子继承
与Java类的继承相似,Spring框架也提供了Spring Bean的属性的继承。也就是说,有的Spring Bean是抽象的,可以被继承;有的Spring Bean可以指定继承的父Spring Bean。这时候,抽象的Spring Bean也可以被称为模板,供定义具体的业务逻辑Spring Bean时使用。这可以通过Spring框架的XML配置文件实现,下面以两个例子进行说明。1.没有实现类的...原创 2016-04-05 11:54:17 · 5847 阅读 · 0 评论 -
Spring框架中的各种*Aware接口
Spring框架提供了多个*Aware接口,用于辅助Spring Bean以编程的方式调用Spring容器。通过实现这些接口,可以增强Spring Bean的功能,但是也会造成对Spring容器的绑定。org.springframework.context.ApplicationContextAware接口Spring框架启动时,ApplicationContext初始化实现了该接口的Spring...原创 2016-03-29 11:05:46 · 7261 阅读 · 3 评论 -
Spring Bean的生命周期管理方法
1.(建议)JSR-250提供了标准的、与JavaEE容器和Spring容器无关的生命周期回调函数@PostConstruct,构造函数之后调用@PreDestroy,注销之前调用2.(不建议)Spring框架提供的org.springframework.beans.factory.InitializingBean接口afterPropertiesSet()Spring框架提供的org.sprin...原创 2016-03-28 23:40:53 · 944 阅读 · 0 评论 -
Spring AOP概述
AOP (Aspect-Oriented Programming)是一种特殊的编程结构,是对目前流行的OOP (Object-Oriented Programming)的一种补充。相对于大家熟悉的OOP (Object-Oriented Programming),OOP的模块单元是class,而AOP的模块单元是aspect。Spring框架中使用AOP主要是取代EJB中的各种声明式服务,如异常处...原创 2016-04-20 23:32:12 · 799 阅读 · 0 评论 -
Spring框架事务管理之三:Spring声明式事务
1.Spring声明式事务与JavaEE CMT的对比JavaEE CMT依赖JTA事务API,Spring声明式事务可以依赖多种事务APIJavaEE CMT只能用于EJB组件,Spring声明式事务可以用于任何类JavaEE CMT支持事务上下文的跨远程调用传播,Spring事务无能为力JavaEE CMT只有遇到java.rmi.RemoteException异常时才回滚事务;Spring声...原创 2016-04-13 14:22:16 · 529 阅读 · 0 评论 -
Spring框架事务管理之四:Spring编程式事务
虽然Spring框架推荐使用声明式事务管理,但是我们也要了解一下Spring的编程式事务。Spring编程式事务仅适用于操作简单的事务,有两种编程实现的方式:直接使用org.springframework.transaction.PlatformTransactionManager接口的某个实现类类似于直接使用JTA的事务API使用org.springframework.transaction.s...原创 2016-04-14 11:37:11 · 1562 阅读 · 0 评论 -
Spring框架spring-web模块中的RestTemplate类详解
RestTemplate类是spring-web模块中进行HTTP访问的REST客户端核心类。RestTemplate请求使用阻塞式IO,适合低并发的应用场景。1. RestTemplate类提供了3个构造函数RestTemplate() RestTemplate(ClientHttpRequestFactory requestFactory)org.springframework.h...原创 2018-07-27 23:51:03 · 8997 阅读 · 1 评论 -
Spring框架5的spring-web模块中的Java对象与HTTP消息之间的数据转换器一览
Spring Framework 5.0.7.RELEASE版本中的spring-web模块,提供org.springframework.http.converter包,提供了一系列的Java对象与HTTP消息之间的数据转换器。其中,最基本的是org.springframework.http.converter.HttpMessageConverter接口,是所有具体数据转换器实现的基本接口。通...原创 2018-07-29 18:01:08 · 562 阅读 · 0 评论 -
Spring Framework 5中的对HTTP/2客户端和服务器的集成
Spring框架最早出现于2003年,以轻量级为Java企业应用开发提供了JavaEE之外的另一个选择。Spring框架就是一个辅助开发Java企业应用的框架。Spring框架的最新版本是5.0,主要新特性如下:最低要求Java 8,兼容Java 9最低要求JavaEE 7,兼容JavaEE 8(Servlet 4.0)支持WebFlux应用,无需Servlet容器即可运行(在Netty服务器中)...原创 2018-07-03 16:25:31 · 1894 阅读 · 0 评论 -
spring-petclinic-graphql项目详解
熟悉Spring框架的开发人员对其著名的spring-petclinic应用都不陌生。Nils在spring-petclinic的基础上开发了结合GraphQL特性的spring-petclinic-graphql应用,本文对该应用进行详解。1. spring-petclinic-graphql的组成backend,使用graphql-java实现的GraphQL API服务依赖graphql-s...原创 2018-04-24 23:54:04 · 2245 阅读 · 0 评论 -
GraphQL的graphql-java-servlet模块详解
本质上,graphql-java-servlet软件模块实现了一个Java Servlet,将GraphQL服务发布为通过HTTP可访问的Web服务。目前,graphql-java-servlet软件模块只支持GraphQL的Query和Mutation操作类型,还不支持subscription操作类型。graphql-java-servlet软件模块的最新版本是2017.12发布的4.7.0。1...原创 2018-04-23 22:17:44 · 3126 阅读 · 0 评论 -
Spring框架中的Cache抽象层
为了统一支持各种各样的Cache,Spring框架从3.1开始,为应用提供了对各种Cache的一致抽象层。说到Cache,这里首先需要指出的是,什么样的数据需要放入Cache呢?那就是应用中通过执行Java方法而得到的结果。Spring框架的Cache抽象层围绕如下两个接口,封装了不同Cache的实现,为应用提供统一的调用接口:org.springframework.cache.Cache接口or...原创 2016-04-08 12:21:21 · 1801 阅读 · 0 评论 -
Spring中基于Schema的AOP配置详解
应用中进行AOP的编程开发,通过Spring框架可以有两种选择:利用 Spring AOP利用 AspectJ(此处略)利用Spring AOP进行AOP的编程开发,定义AOP相关实现有两种方式:基于XML Schema的配置文件定义通过@Aspect系列标注定义下面我们详细介绍如何通过大家熟悉的XML配置文件进行AOP开发。1.首先在XML配置文件中,引入AOP的XSD<?xml vers...原创 2016-04-22 14:22:03 · 4830 阅读 · 3 评论 -
Spring AOP中的动态代理实现机制
AOP中的目标对象(target object),也被称为是advised object,是在pointcut处插入aspect时所执行的advice方法中所用到的对象。有点罗嗦,请慢慢体会。任何一个target object都是通过动态代理机制创建的,以实现在运行时被动态插入。本文介绍Spring AOP中的动态代理实现机制,即介绍创建target object的机制。Spring AOP中的动...原创 2016-04-23 17:41:57 · 1094 阅读 · 0 评论 -
JavaEE6 CDI与Spring DI的比较
Dependency Injection (DI) 是将容器管理的ManagedBean注入到应用中的一种机制。这种机制最初来自Spring框架,Spring框架通过IoC实现ManagedBean的注入。JavaEE 6吸收了Spring框架的许多特性,并借助于JavaEE容器提供了CDI实现ManagedBean的注入。1.Context and Dependency Injection (C...原创 2016-03-03 23:57:56 · 3596 阅读 · 1 评论 -
Spring框架的基本概念
1.Spring框架与JavaEE平台的关系Spring框架最早出现于2004年,正是为弥补JavaEE平台的不足而诞生。JavaEE平台虽然提供了大量的标准组件,但是缺没有解决如何将这些独立的组件有机结合起来的问题,而是将这些问题留给了架构师和开发人员。 Spring则为整合这些组件成为完整的应用提供了灵活的解决方案。2.相对于JavaEE平台(此处不讨论EJB3.0之前的各种缺陷...原创 2016-03-18 14:50:43 · 735 阅读 · 0 评论 -
利用Spring Boot配置的TestNG测试用例详解
与JUnit不同,Spring Boot本身没有提供与TestNG集成的基础设施。那么如何利用Spring Boot的配置,执行一个TestNG测试用例呢?在Spring Boot提供的大量samples中,有一个spring-boot-sample-testng可供参考。基于该sample中,我们的TestNG测试类如下:@SpringBootTest(classes = { ClientLau...原创 2017-08-11 14:14:12 · 14799 阅读 · 0 评论 -
Spring Boot的SpringApplication类详解
相信使用过Spring Boot的开发人员,都对Spring Boot的核心模块中提供的SpringApplication类不陌生。SpringApplication类的run()方法往往在Spring应用的入口类中被调用,以启动Spring应用。1.Spring应用的入口类与SpringApplication类1) Spring应用的入口类Spring应用的入口类是Spring应原创 2017-08-13 21:18:59 · 26742 阅读 · 3 评论 -
使用Spring Boot与否,初始化Spring应用的对比
Spring framework最初以轻量级打败了学院派的JavaEE。但是作为Spring framework核心的IoC,却总显得不那么直观。初始化一个Spring应用需要大量的配置,然后启动Web应用的时候又需要Servlet容器,等等。为了方便开发人员使用,Spring做了大量的易用性改进,下面通过简单的例子,看看启动一个Spring应用有多简单了。1.Spring fra原创 2017-08-13 21:37:46 · 279 阅读 · 0 评论 -
Spring Boot应用的Unable to find main class异常详解
1. Spring Boot应用执行java -jar myApp.jar时,出现如下异常:[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.4.RELEASE:repackage (default) on project teac: Execution default of ...原创 2017-07-19 23:13:37 · 43226 阅读 · 0 评论 -
Spring Boot的Maven插件Spring Boot Maven plugin详解
Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。Spring Boot Maven plugin能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。Spring Boo...原创 2017-07-18 15:18:20 · 146643 阅读 · 9 评论 -
Spring MVC-RAML Synchronizer Sample代码分析
Spring MVC-RAML Synchronizer Sample,顾名思义是Spring MVC-RAML Synchronizer的一个示例。但是Spring MVC-RAML Synchronizer包含3个组成部分,所以准确地说,Spring MVC-RAML Synchronizer Sample是springmvc-raml-plugin的示例。即,Spring MVC-RAML ...原创 2017-07-12 16:07:57 · 866 阅读 · 0 评论 -
Spring Boot执行repackage遇到Source must refer to an existing file异常详解
在Spring Boot应用构建完成后,修改了中间生成的代码,希望能够更新最终的jar包。执行mvn spring-boot:repackage,遇到异常如下:Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.4.RELEASE:repackage (default-cli) on pr原创 2017-07-20 14:40:30 · 16440 阅读 · 0 评论 -
Spring TestContext Framework对JUnit4和TestNG的集成支持详解
Spring TestContext Framework是spring-test模块中提供的一个测试框架,能够用于单元测试和集成测试。为了与已有的JUnit 4 (JUnit 4.12+)和TestNG测试框架集成使用,Spring TestContext Framework还提供了如下集成的支持。1. Spring JUnit 4 Runner,用以全面集成JUnit 4@RunWith(Spr...原创 2017-08-15 18:16:47 · 2983 阅读 · 0 评论 -
Spring应用中注入Spring bean的情况总结
1.在一个应用类(也是一个Spring bean)中,通过Spring bean注入接口的实现类接口定义如下:public interface AnInterface { String getMessage();}1) 只定义了接口的一个实现类(这也是最常见的一种情况)实现类定义如下:@Componentpublic class AnImpl implements ...原创 2017-08-23 17:31:07 · 2025 阅读 · 0 评论 -
Spring框架的IoC容器详解
Spring框架的最大特性是提供了IoC容器。谈到Spring框架的IoC容器,首先要明白Spring Bean的概念。Spring Bean特指由Spring IoC容器实例化、注入和管理的Java对象。Spring IoC容器的核心是,在需要的时候通过名称直接引用Spring Bean,而无需编程创建Spring Bean的对象。如果一个Spring Bean还依赖其他Spring Bean,...原创 2016-03-20 23:27:13 · 550 阅读 · 0 评论 -
不同作用域(scope)的Spring Bean之间的依赖关系的动态代理注入
Spring Bean可能具有不同的作用域(Scope),相同域的Spring Bean之间互相依赖基本没有问题。但是不同域的Spring Bean之间互相依赖,如果不做特殊定义,则只能在实例化Spring Bean时注入其所依赖的其他Spring Bean。如果被注入的Spring Bean的作用域长,而注入其他Spring Bean的作用域短,似乎也没有问题,因为被注入的Spring Bean...原创 2016-03-25 09:12:13 · 2747 阅读 · 1 评论 -
Spring框架的两个简化XML配置文件的p-namespace和c-namespace
Spring框架的模块化设计,出现了大量的命名空间。应用开发过程中用到的模块,才需要引入对应的命名空间。Spring框架的丰富功能,导致了Spring框架的XML配置文件十分复杂。这里要介绍的是两个特殊的命名空间,其出现只是为了简化XML配置文件的编写,并未提供应用所需的逻辑功能。1. p-namespace在XML配置文件中,首先引入如下命名空间:xmlns:p="http://www.spri...原创 2016-03-26 22:39:50 · 4758 阅读 · 1 评论 -
Spring Bean的域scope
1. Spring Bean内置的域scope:singleton 默认,一个Spring IoC容器中只能有一个bean实例,容器启动时初始化prototype 在一个Spring IoC容器中可以有多个bean实例,每次被调用gettor时初始化request bean实例的生命周期只在一次HTTP请求中,即每次HT...原创 2016-03-24 23:35:04 · 1990 阅读 · 0 评论 -
配置一个Spring Boot应用的过程详解
一个Spring Boot应用,为了适应不同的运行环境,其可配置的属性不能写在应用代码中,而往往位于应用之外,即配置属性的改变无需修改Spring Boot应用。Spring Boot可以通过如下几种方式实现属性的应用外配置:properties文件yml文件操作系统的环境变量应用的启动参数这里我们只介绍最基本的application.properties配置文件及其使用。1.为Spring Bo...原创 2017-09-01 15:28:16 · 460 阅读 · 0 评论 -
基于Eventuate的微服务应用Money Transfer分析
Money Transfer是Chris Richardson在自己的官方博客提供的一个账户转账的应用示例,其核心是基于Eventuate实现的。Eventuate通过一个公共的事件库(Event Store)提供了分布式数据的最终一致性实现。1. 在Money Transfer应用中,集中展现了微服务的如下特性:microservices polyglot persistence e...原创 2017-09-13 11:31:20 · 1760 阅读 · 0 评论 -
Spring应用的运行环境及属性配置综述
1.Spring Framework的Environment接口Spring Framework核心模块中的org.springframework.core.env.Environment接口,表示Spring应用的运行环境,用以表示Spring应用的profile和properties。2.Spring Framework的profiles1) 定义profilesSpring的profiles...原创 2017-09-06 13:46:48 · 833 阅读 · 0 评论 -
Spring Cloud OpenFeign详解
作为Spring Cloud的子项目之一,Spring Cloud OpenFeign以将OpenFeign集成到Spring Boot应用中的方式,为微服务架构下服务之间的调用提供了解决方案。首先,利用了OpenFeign的声明式方式定义Web服务客户端;其次还更进一步,通过集成Ribbon或Eureka实现负载均衡的HTTP客户端。Spring Cloud OpenFeign的最新版本是2...原创 2018-08-02 21:31:34 · 114799 阅读 · 5 评论