spring boot 添加自定义 fliter
自定义的 springboot 过滤器要注册到 spring boot中, 首先先添加一个过滤器,然后在spring boot 进行注册即可。
12345678910111213141516171819202122232425import com.reapal.openapi.web.filter.XSSFilter;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * Title: 注册自定义过滤器 * Description: * * @author liu kai * @date 2018/6/26 16:06. */@Configurationpublic class XssFilterConfig { @Bean public FilterReg ...
springboot + vue 跨域处理
在使用 vue 做前端开发时,碰到 vue 请求接口出现跨域问题。解决的方法,就在后台添加一个跨域请求的过滤器,来添加跨域支持。
123456789101112131415161718192021222324252627282930313233343536373839import org.springframework.stereotype.Component;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;/** * Title: 跨域处理 * Description: * vue 请求服务跨域处理 * @author liu kai * @date 2018/6/14 10:38. */@Componentpublic class CorsFilter implements Filter { @Override ...
springboot使用pagehelper报错解决方法
问题springboot项目使用SpringMVC的pagehelper报错。
先说结论springboot 不能使用pagehelper的4.1.x 和 5.1.x,而需要使用 pagehelper-spring-boot-starter
起因同事的新项目使用 Spring boot,之前是 SpringMVC 所以把pom.xml直接复制过来,一跑就报各种错,各种谷歌百度都不管用。查看 pom 依赖的包后,决定对他一顿老拳。
正确的示例而必须使用,否则 yml 配置无效。
12345<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.1.2</version></dependency>
坑一个是一个的示例,谁用谁脱发12345<dependency> <groupI ...
getWriter() has already been called for this response 的解决办法
问题在使用springboot时,发现有个同事报了一个错:
getWriter() has already been called for this response错误提示也比较明显,是被调用过了。
出错的部分代码如下:
12345678910111213141516171819202122232425try { //有问题的部份 //PrintWriter out = null; //out = response.getWriter(); //String json = new ObjectMapper().writeValueAsString(map); //out.write(json); //out.flush(); //out.close(); outputStream = response.getOutputStream(); String json = new ObjectMapper().writeValueAsString(map); outputStream.write(json.getBytes()); outputStr ...
spring boot @Bean源码分析
1.先看下 Bean 注解的内容
123456789101112@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Bean { @AliasFor("name") String[] value() default {}; @AliasFor("value") String[] name() default {}; Autowire autowire() default Autowire.NO; String initMethod() default ""; String destroyMethod() default AbstractBeanDefinition.INFER_METHOD;}
Target 中指定了 ...
spring boot 解决生产环境下多线程调用FTP流被关闭问题
前言在 spring boot 下把 FTP 工具类以类的型式注入到 spring 容器中。FTP 工具类在实际应用过程中,如果是单例的对象会出现问题:当线程 A 调用FTP工具时调用连接,线程B 同时调用FTP并使用完闭关闭流,这时A的连接会就被关闭了。
解决方案将 Bean 置为多例对象。这样当线程每次调用该 Bean 就会生成一个新对象,互相之间不影响。
12public class FtpUtil {}
12345678910111213@Configurationpublic class FtpUtilConfig { @Autowired private FtpProperties ftpProperties; @Bean @Scope("prototype") public FtpUtil ftpUtil () { FtpUtil ftpUtil = new FtpUtil(); return ftpUtil; }}
1234 ...
springboot中的@ConfigurationProperties注解的使用
ConfigurationProperties 注解的使用将配置文件中的配置,以属性的形式自动注入到 实体中。要特别说明的一个注属性ignoreUnknownFields = false这个超好用,自动检查配置文件中的属性是否存在,不存在则在启动时就报错。locations 这个注解属性,不知道为什么不可以使用。用来指定其他配置文件名。
1.application.properties 配置
12345#自动配置设置service.properties.name=my-test-nameservice.properties.ip=192.168.1.1service.user=kayleservice.port=8080
2.对应实体Properties 就是对应的配置文件中的 properties,注意也要给 get/set也就是说,配置文件中的前缀是什么, prefix 中就使用什么。成员变量就是对应的配置文件的第二级属性名。
12345678910111213141516171819202122232425262728293031323 ...
springboot @Import注解
简述Import注解在4.2之前只支持导入配置类在4.2,@Import注解支持导入普通的java类,并将其声明成一个bean。在 spring boot 的配置类中的使用比较多。
测试@Import 的自动导入功能
1.一个配置类
123456@Configuration@Import(ImportDemo.class)public class ImportConfig {}
2.一个普通没有加任何注解的类
12345public class ImportDemo { public void doSomething () { System.out.println("ImportDemo.doSomething()"); }}
3.测试类
12345678910public class TestMain { public static void main(String[] args) { AnnotationConfigApplica ...
springboot03 非parent方式搭建
简述项目中通过maven集成 springboot 有两种方式:
继承parent 方式
非继承 parent 方式
上一篇文章已经介绍过通过直接继承springboot项目座标的方式继承,这次说明如何通过非直接继承的方式构建springboot项目。
非parent 方式推荐使用这种方式。这样就可以使子项目使用 parent 标签了。
这种方式也比较直观,这里需要两个项目进行搭建测试
parent 项目,需要被继承
childen 项目,即需要继承 parent 项目,又需要springboot项目座标构建项目。
parent 项目配置添加一个 spring boot 依赖,dependencyManagement 中的 springboot 就是核心,是springboot 官方提供的依赖,它是一组springboot的完整依赖座标,根据需要进行引用。type 是 pom,scope 是 import,这种类型的 dependency 只能在 dependencyManagement 标签中声明。
12345678910111213141516171819202122232 ...
springboot02-搭建parent方式
spring boot 的搭建相当简单,简化了大量的xml配置,只需要关键配置即可开箱使用。
搭建什么是 parent 方式?使用 pom.xml 中的 parent 标签。官方示例中,都是让我们继承一个 spring 的 spring-boot-starter-parent 这个parent就是:
123456789101112<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version></parent><dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring ...