在 Spring Boot 中,@Controller 注解是专门用于处理 Http 请求处理的,是以 MVC 为核心的设计思想的控制层.@RestController 则是 @Controller 的衍生注解. 本项目源码下载 1 Spring Boot Controller 1.1 原理 Spring Boot 本身就 Spring MVC 的简化版本.是在 Spring MVC 的基础上实现了自动配置,简化了开发人员开发过程. Spring MVC 是通过一个叫 DispatcherSer…
存在这样一个场景: 当项目启动时间过长,又没办法缩短的时候,写单元测试就是一个十分耗时的工作, 这工作不在于使用编写代码,而在于每次run junit test 都需要完整启动一次项目,白白浪费宝贵的生命. 当由于某个字段没有赋值,或者某个简单判断写错,导致需要再等个3-5分钟启动 junit test,是否会想要执行一次san check? 于是乎: 假若能使用controller来调用test类方法的话,那么在本地调试单元测试时,对于一些简单的代码修改, 通过热部署,只需要重新进行一次url…
一.介绍 JUnit是一款优秀的开源Java单元测试框架,也是目前使用率最高最流行的测试框架,开发工具Eclipse和IDEA对JUnit都有很好的支持,JUnit主要用于白盒测试和回归测试. 白盒测试:把测试对象看作一个打开的盒子,程序内部的逻辑结构和其他信息对测试人 员是公开的: 回归测试:软件或环境修复或更正后的再测试: 单元测试:最小粒度的测试,以测试某个功能或代码块.一般由程序员来做,因为它需要知道内部程序设计和编码的细节: JUnit GitHub地址:https://github.…
对Controller进行单元测试是Spring框架原生就支持的能力,它可以模拟HTTP客户端发起对服务地址的请求,可以不用借助于诸如Postman这样的外部工具就能完成对接口的测试. 具体来讲,是由Spring框架中的spring-test模块提供的实现,详见MockMvc. 如下将详细阐述如何使用MockMvc测试框架实现对"Spring Controller"进行单元测试,基于Spring Boot开发框架进行验证. 添加测试框架依赖: <!-- Spring框架 --&g…
实际开发中,Junit单元测试是必不可少的.在spring-boot 中可以通过测试模块(spring-boot-starter-test)快速使用单元测试功能. 开始 本示例在 spring boot 1.5.4 版本测试通过 1.pom.xml中添加配置spring-boot-starter-test <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b…
配置文件中添加插件 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.0.5.RELEASE</version> <executions> <execution> <goals> <goal>repa…
Spring Boot 完成WEB项目开发 开发工具:eclipse 框架:Maven:Spring Boot:Mybatis 界面:jsp:javascript:css 前言: 在SpringBoot的学习中,遇到很多问题,也在网上找过许多文档,但大多数都是使用IDE开发工具完成的,所以在此记录使用Eclipse开发工具完成的SpringBootWeb项目. 感谢在学习中看到过的文章的作者们,让我学习少走许多弯路. 一.  Eclipse关联Maven 首先下载Maven,将Maven放置在除…
最近在看 spring boot 的东西,觉得很方便,很好用.对于一个简单的REST服务,都不要自己部署Tomcat了,直接在 IDE 里 run 一个包含 main 函数的主类就可以了. 但是,转念一想,到了真正需要部署应用的时候,不可能通过 IDE 去部署啊.那有没有办法将 spring boot 的项目打包成一个可执行的 jar 包,然后通过 java -jar 命令去启动相应的服务呢? 很明显,是有的.下面,我把我自己的实践过程及遇到的问题,一 一说明一下. 首先,把项目的 POM 配置…
我的spring boot + mybatis项目在idea里面执行正常,但发布测试环境打成可执行jar包后就启动失败,提示错误如下: [ ERROR] [2018-08-30 17:23:48] org.springframework.boot.SpringApplication [845] - Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creat…
1.配置SpringBootApplication(对spring boot来说这是最基本) package io.github.syske.springboot31; import org.springframework.boot.Banner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; impor…
1.pom.xml文件中加入下列依赖: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.6.1</version></dependency> <dependency> <groupId>io.springfox</groupId&g…
由于项目将原有的  Date类型的字段改造为 LocalDate,LocalDateTime,LocalTime 类型, 发现  spring  对项目的时间格式无法自动转换,故需手动配置下. 在spring boot  中需在  maven 中引入  jsr-310  的支持 <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype…
在前面SpringBoot的文章中介绍了SpringBoot的基本配置,今天我们将给大家讲一讲SpringBoot的运行原理,然后根据原理我们自定义一个starter pom. 本章对于后续继续学习SpringBoot至关重要,了解SpringBoot运行原理对于我们深入学习SpringBoot有着非常重要的作用. SpringBoot的自动配置从何而来 要想了解SpringBoot的自动配置,我们可以在源码看到相关代码和配置. SpringBoot关于自动配置的源码在spring-boot-a…
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Spring Boot 版本:2.2.x 最好对 Spring 源码有一定的了解,可以先查看我的 <死磕 Spring 之 IoC 篇 - 文章导读> 系列文章 如果该篇内容对您有帮助,麻烦点击一下"推荐",也可以关注博主,感激不尽~ 该系列其他文章请查看:<精尽 Spring B…
[参考文章]:SpringBoot之@EnableConfigurationProperties分析 [参考文章]:在Spring Boot中使用 @ConfigurationProperties 注解, @EnableConfigurationProperties 1. pom <!-- 通过资源文件注入属性配置 --> <dependency> <groupId>org.springframework.boot</groupId> <artifac…
等于将类交给spring管理,也就是IOC. 注解@Autowired是自动装配,也就是spring帮你创建对象,当然前提是这个@Autowired的类已经配置成Bean了,spring配置bean文件我们常用的方法是编写配置文件.而spring boot则不需要这么麻烦,它提供了两个注解可以实现这个功能. 1.@Configuration 2.@Component 虽然@Configuration注解本质上还是 @Component,但是,两者是有区别的.这里简单的提一下,需要深入了解的可以百…
1-添加maven依赖 2-添加redis配置 3-工具类 1-添加maven依赖 实际上是封装了jedis <!-- redis 依赖--> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.8.7.RELEASE</version> &l…
Spring boot 对代码结构无特殊要求,但有个套最佳实践的推荐 不要使用没有包名的类.没有包名时,@ComponentScan, @EntityScan, or @SpringBootApplication 可能会有问题. Main类在包路径中的位置:强烈建议main类放在包的根路径上.We generally recommend that you locate your main application class in a root package above other classe…
1. 前言 在开发Spring Boot应用时会用到根据条件来向Spring IoC容器注入Bean.比如配置文件存在了某个配置属性才注入Bean : 图中红色的部分是说,只有ali.pay.v1.app-id存在于Spring的环境配置中时这个@Configuration标记的类才能注入Spring IoC. 这里面的@ConditionalOnProperty就是条件注解系列的一种.它还有很多种来满足各种场景的条件注解: 其实数量远不止截图中这几个,在Spring 家族的其它框架中也有实现.…
写一个测试项目,在配置动态数据源的时候采用的AOP切面到Controller层中,根据参数判断是否切合数据源,结果发现,每次Controller层的类都会初始化两次! 后来测试发现,把切面放到Service层就不会有问题. 暂不明确啥问题,以后有时间找到了再补上,暂时记录以备查询.…
如果您对Spring MVC不熟悉并且还没有尝试过快速入门案例,建议先看一下相关的内容. @Controller:修饰class,用来创建处理http请求的对象 @RestController:Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置@ResponseBody,默认返回json格式. @RequestMapping:配置url映射 下面我们尝试使用…
使用Gradle构建项目,继承了Ant的灵活和Maven的生命周期管理,不再使用XML作为配置文件格式,采用了DSL格式,使得脚本更加简洁. 构建环境: jdk1.6以上,此处使用1.8 Gradle 4.4.1 SpringBoot idea 一.下载并安装Gradle Gradle官网   Gradle官网 1.下载Gradle 下载Gradle   Gradle版本下载 2.解压Gradle 下载之后解压到你想存放的目录   Gradle解压 3.设置Gradle环境变量 创建一个环境变量…
spring.datasource.schema指定启动后执行的sql文件位置. 我发现中文乱码,原因是没有指定执行sql script encoding: spring: datasource: url: "jdbc:h2:mem:test" username: "sa" password: "" schema: database/import.sql sql-script-encoding: utf-8 type: com.alibaba.d…
1.任务执行和调度 Spring用TaskExecutor和TaskScheduler接口提供了异步执行和调度任务的抽象. Spring的TaskExecutor和java.util.concurrent.Executor接口时一样的,这个接口只有一个方法execute(Runnable task). 1.1.TaskExecutor类型 Spring已经内置了许多TaskExecutor的实现,你没有必要自己去实现: SimpleAsyncTaskExecutor  这种实现不会重用任何线程,…
前言 学习官方文档,发现对于过滤器有分为三类 默认过滤器 自定义过滤 全局过滤器 于是就有一个疑问,关于这些过滤器的访问顺序是怎样的,今天就以一个demo来进行测试 准备阶段 过滤器工厂类 以此为模板,复制出几份就可以了,注意打印信息,可区分就行 public class ExampleGatewayFilterFactory extends AbstractGatewayFilterFactory { /** * 创造出的过滤器的顺序 */ private int order; /** * c…
Controller常用注解 @Controller  处理http请求 @RestController Spring4之后新加的注解,原来返回json数据需要@ResponseBody配合@Controller,现在合并成@RestController @RequestMapping  配置url映射,value配置url方法路径,method配置请求方式, 例:@RequestMapping(value="hello",method = RequestMethod.GET) @Pa…
package com.sample.smartmap.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.spring…
首先,要让IDE支持Lombok,这里以idea为例进行介绍. 点击项目的“File”-—>"settings"—>"Plugins",在marketplace下搜索“Lombok”,截图如下: 点击“install”,重启IDE即可. Lombok常用注解介绍: @Getter : 用于生成getter方法,可用在类或属性上. @Setter : 用于生成setter方法,可用在类或属性上. @AllArgsConstructor : 用于生成全参构造…
用@Component 注释下,随便放个地方就可以了 package com.chinaws.wsarchivesserver.core.config; import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import…
1.关于layui的通用返回类 code.count.data.msg public class Msg { private long code = 0; private long count = 0; private Object data; private String msg; public long getCode() { return code; } public void setCode(long code) { this.code = code; } public long get…