Versioning 为适应需求的变化以及兼容已有的API,需要创建新版本的API,一般有四种流行的版本化API的方法: URI版本化 URI参数版本化 Accept header版本化 自定义header版本化 URI版本化 在这种方法中,版本信息变成了URI一部分.例如: LinkedIn: https://api.linkedin.com/v1/people/~ Yahoo: https://social.yahooapis.com/v1/user/12345/profile SalesF…
WebGrid with filtering, paging and sorting by Jose M. Aguilar on April 24, 2012 in Web Development A few days ago I received some questions on the use of the Webgrid helper in the comments section of my personal blog, specifically on how to implement…
关于spring整合mybatis的工程配置,已经在Spring+MyBatis实践—工程配置中全部详细列出.在此,记录一下几种通过MyBatis访问数据库的方式. 通过sqlSessionTemplate来进行数据库访问. 通过Dao接口来进行数据库访问. 使用@Select注解形式访问数据库 1.在spring框架中使用mybatis来进行数据操作配置,参考Spring+MyBatis实践—工程配置的spring-datasources.xml文件. 2.Demo1—通过sqlSession…
Spring MVC 实践 标签 : Java与Web Converter Spring MVC的数据绑定并非没有任何限制, 有案例表明: Spring在如何正确绑定数据方面是杂乱无章的. 比如: Spring总是试图用默认的语言区域将日期输入绑定到java.util.Data, 如果想要使用不同的日期格式(format),就需要Converter的协助. Spring提供了Converter接口来供开发者自定义Converter类: /** * @since 3.0 * @param <S>…
Spring MVC 实践 标签 : Java与Web Spring Web MVC Spring-Web-MVC是一种基于请求驱动的轻量级Web-MVC设计模式框架, Spring MVC使用MVC架构思想, 对Web层进行职责解耦,使用请求-响应模型将数据.业务与视图进行分离, 简化开发. MVC MVC(模型-视图-控制器)是一个以设计界面应用程序为基础的架构模式,通过分离模型-视图-控制器在应用中的角色将业务逻辑从界面中解耦: 模型负责封装应用数据和业务逻辑; 视图仅负责展示数据; 控制…
Spring AOP 介绍 AOP的介绍可以查看 Spring Boot实践——AOP实现 与AspectJ的静态代理不同,Spring AOP使用的动态代理,所谓的动态代理就是说AOP框架不会去修改字节码,而是在内存中临时为方法生成一个AOP对象,这个AOP对象包含了目标对象的全部方法,并且在特定的切点做了增强处理,并回调原对象的方法. Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理.JDK动态代理通过反射来接收被代理的类,并且要求被代理的类必须实现一个接口…
借鉴:http://www.cnblogs.com/xrq730/p/4919025.html     https://blog.csdn.net/zhaokejin521/article/details/50144753 http://www.importnew.com/24305.html AOP介绍 一.AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善…
Spring Boot 实践系列,Spring Boot + MyBatis . 目的 将 MyBatis 与 Spring Boot 应用程序一起使用来访问数据库. 本次使用的Library spring-boot-starter:2.2.0.M4 mybatis-spring-boot-starter:2.0.1 mybatis-spring-boot-starter-test:2.0.1 h2:1.4.199 lombok:1.18.8 数据库访问 在实现 MyBatis 之前,首先进行…
Spring Batch在大型企业中的最佳实践 在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理.这样的过程就是"批处理". 批处理应用通常有以下特点: 数据量大,从数万到数百万甚至上亿不等: 整个过程全部自动化,并预留一定接口进行自定义配置: 这样的应用通常是周期性运行,比如按日.周.月运行: 对数据处理的准确性要求高,并且需要容错机制.回滚机制.完善的日志监控…
Spring Boot基本描述 可以利用http://start.spring.io网站的进行Spring Boot的初始化构建.这个初始化构建器允许你输入工程基本信息.挑选工程支持的功能,最后会生成一个zip压缩包供你下载.利用http://start.spring.io网站生成的工程模板中,在pom.xml文件中的parent tag表明此工程继承自spring-boot-starter-parent POM,这样能够保证工程继承Spring Boot的默认依赖以及版本.此POM文件中有两个…
The fifth part of my Spring Data JPA tutorialdescribed how you can create advanced queries with Spring Data JPA and Querydsl. This blog entry will describe how you can use Spring Data JPA for sorting the query results. As an example I will be adding…
初次实践:Spring+MyBatis技术搭建框架,采用Bootstrap前端开源框架. 简介: MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录. 工程架构图: 1.工程架包引入:pom.xml <pr…
二.实践 一些说明: 项目IDE采用Intellij(主要原因在于Intellij颜值完爆Eclipse,谁叫这是一个看脸的时代) 工程依赖管理采用个人比较熟悉的Maven(事实上SpringBoot与Groovy才是天生一对) 1.预览: (1)github地址 https://github.com/djmpink/springboot-mybatis git :  https://github.com/djmpink/springboot-mybatis.git (2)完整项目结构 (3)数…
端口:8888,方便起见直接读取配置文件,生产环境可以读取git.application-dev.properties为全局配置.先启动配置中心,所有服务的配置(包括注册中心的地址)均从配置中心读取. consumer 服务消费者 端口:18090,调用服务提供者,为了演示header传递. core 框架核心包 核心jar包,所有微服务均引用该包,使用AutoConfig实现免配置,模拟生产环境下spring-cloud的使用. eureka 注册中心 端口:8761,/metadata端点实…
用spring cloud 微服务框架有一段时间了有一些坑点在这里给大家记录一下希望大家用得着 1.当我们使用聚合性能监控的时候,我们采用 rabbitmq作为消息中间件来收集性能信息最后在使用TurbineStream将信息进行聚合 这个工具聚合是根据“应用名+方法名”进行求和汇总的 如下代码: @HystrixCommand(commandProperties = { @HystrixProperty(name = "execution.isolation.thread.timeoutInM…
原文:http://blog.csdn.net/xyh820/article/details/7303330 概述 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名.类型等信息,如果关系表字段和 PO 属性名.类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过 Java 反射机制获取. 注释和 Java 代码位于一个文件中,…
pring Boot是最流行的用于开发微服务的Java框架.在本文主要分享的是在专业开发中使用Spring Boot所采用的最佳实践.这些内容是基于个人经验和一些熟知的Spring Boot专家的文章. 在本文中重点介绍Spring Boot特有的实践(大多数时候,也适用于Spring项目).以下依次列出了最佳实践,排名不分先后. 1.使用自定义BOM来维护第三方依赖 Spring Boot项目本身使用和集成了大量的开源项目,它帮助我们维护了这些第三方依赖.但是也有一部分在实际项目使用中并没有包…
前期准备在Maven项目中添加Spring Retry和切面的依赖 POM: <!-- Spring Retry --> <dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> </dependency> <dependency> <groupId>org.aspe…
这几天重新把传智播客的黎活明的Spring2.5的教程学习了一遍,跟着上面的解析Spring的过程跟着制作了一个简单的Spring IOC和Spring AOP,先在贴上来给大家参考一下. 1:管理Bean和依赖注入 配制文件bean.xml格式如下模板所示: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.ganggang.com/beans"&g…
REST是什么 REST(REpresentational State Transfer)是一个设计分布式web应用的框架风格,有六个基本原则: Client-Server:应用的参独立与者可分为Client和Server,Client和Server可以独立发展和扩展. Stateless:Client和Server之间的交互应该是stateless,server不应该记录client的状态,clent必须在请求中包含server可以理解的全部的必须的信息. Layered System:Cli…
Spring概要 Spring Framework提供了依赖注入模型和面向切面编程,简化了基础型代码的编写工作以及更好的能够与其它框架和技术整合起来.Spring Framework由data access.instrumentation.messaging.testing.Web integration等模块组成.开发者可以只关心自己应用程序相关模块. 依赖注入 依赖注入是Spring Framework的核心,能够降低模块之间的耦合度.为了能够更好的理解依赖注入的概念,举个例子解释一下:考虑…
Error Responses 在REST API中,HTTP状态码有非常重要的作用.API开发者应该坚持为每一个请求返回一个正确合适的状态码,而且应该在响应body中包含有用的.细粒度的错误信息.这些细节都可以帮助API使用者更快的定位错误.一般在错误响应体中应该包含如下信息(当然可以根据具体情况定义): timestamp:错误发生的时间(时间戳) status:错误相对应的http状态码 error:http状态码相关的描述 exception:引起错误的类的详细路径信息 message:…
Securing REST Services 一般有六种方式实现的REST服务的安全: Session-based security HTTP Basic Authentication Digest Authentication Certificate based security XAuth OAuth Session-based Security Session-based Security方式需要server端会话保存用户的身份信息,以便在多个请求中使用.它的流程图如下所示: Spring…
RestTemplate 可参考spring实战来写这部分. RestTemplate免于编写乏味的样板代码,RestTemplate定义了33个与REST资源交互的方法,涵盖了HTTP动作的各种形式,其实这些方法只有11个独立的方法,而每一个方法都由3个重载的变种. delete():在特定的URL上对资源执行HTTP DELETE操作 exchange():在URL上执行特定的HTTP方法,返回包含对象的ResponseEntity,这个对象是从响应体中映射得到的 execute():在UR…
HATEOAS HATEOAS(The Hypermedia As The Engine Of Application Statue)是REST架构的主要约束."hepermedia"表示任何包含指向图片.电影.文字等资源的链接,Web是超媒体的经典例子.HATEOAS背后的思想其实非常简单,就是响应中包含指向其它资源的链接.客户端可以利用这些链接和服务器交互. client不用事先知道服务或者工作流中不同步骤,还有client不用再为不同的资源硬编码URI了.而且服务器还可以在不破坏…
  实现自定义zuul Filter 方法很简单,只要继承ZuulFilter跟加入到spring IOC容器即可,zuulFilter是一个抽象类,里面包含以下方法需要我们实现: String filterType():使用返回值设置Filter类型,可设置pre.route.post.error int filterOrder():使用返回值设置filter执行次序 boolean shouldFilter():使用返回值设值改Filter是否执行 Object run() throws Z…
-- 2019-04-15 20:22:34 引言 上一节是一个最基本的zuul网关实例,它是整个spring-cloud生态里面“路由-服务”的一个缩影,后续也就是锦上添花.这节主要讲述zuul的一些基本典型配置,包括路由与一些增强配置. 路由配置 zuul作为微服务的“路由器”,有很多的路由功能: 路由配置简化与规则 前面单实例serviceId映射: zuul: routes: client-a: path: /client/** serviceId: client-a 是从/client…
                                                                                                -- 2019-04-15 16:58:02  Zuul是什么? 以下是官方解释: Zuul is the front door for all requests from devices and web sites to the backend of the Netflix streaming appli…
之前用的ssm框架,大部分只是利用spring的IOC特性,很明显这能够为我们开发人员在对象的创建上面节省大部分时间.当相似得到业务越来越多,很多代码也是越来越重复,轮子是越来越重复,比如验证用户登录这一块的代码.由于我们这边Java是给前端app调用的,在正式请求业务接口的之前,会校验该用户是否登陆过.所以在每个 controller里面最开始都是校验前端传递的登录码是否有效.前几日得闲,想到spring有aop的特性,简单的理解就是拦截器,在请求正式的业务数据之前,我们可以通过这个特性来验证…
前言 本文将从示例.原理.应用3个方面介绍 spring data jpa. 以下分析基于spring boot 2.0 + spring 5.0.4版本源码 概述 Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在 Spring 应用上下文中配置的 Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)…