
springboot
祈雨v
这个作者很懒,什么都没留下…
展开
-
BeanDefinitionRegistryPostProcessor扩展
通过BeanDefinitionRegistryPostProcessor扩展能实现额外的很多功能,例如实现将一个接口动态代理,并将该代理对象在spring容器初始化完成前注册到spring容器中。实现可以通过@Autowired等注释或其他方法从spring容器中获取该代理对象。代理工厂import lombok.extern.slf4j.Slf4j;import java.lang.r...原创 2020-01-05 15:26:52 · 396 阅读 · 0 评论 -
spring循环依赖过程解析
spring解决循环依赖spring在创建和依赖注入单例对象时,通过三级缓存的设计,可以解决大多数的循环依赖问题,但是基于三级缓存的解决方案,对于部分场景还是无法解决循环依赖的问题,会由spring抛出异常。spring的三级缓存由singletonObjects、earlySingletonObjects、singletonFactories组成:singletonObjects:保存初...原创 2019-11-09 15:35:44 · 740 阅读 · 3 评论 -
springboot(16)Spring Boot使用单元测试
转载自嘟嘟独立博客本文链接地址: Spring Boot干货系列:(十二)Spring Boot使用单元测试前言这次来介绍下Spring Boot中对单元测试的整合使用,本篇会通过以下4点来介绍,基本满足日常需求Service层单元测试Controller层单元测试新断言assertThat使用单元测试的回滚正文Spring Boot中引入单元测试很简单,依赖...转载 2018-05-23 22:28:25 · 204225 阅读 · 12 评论 -
springboot(17)编程式事务
@Autowiredprivate TransactionTemplate transactionTemplate;Boolean isSuccess = transactionTemplate.execute(new TransactionCallback<Boolean>() { public Boolean doInTransaction(TransactionSt...原创 2018-06-04 22:38:32 · 6024 阅读 · 0 评论 -
springboot(18)logback指定配置文件
application.ymllogging: config: classpath:logback.xml原创 2018-07-25 21:04:46 · 4879 阅读 · 0 评论 -
springboot(19)Redis缓存@Cacheable对存在的数据返回null
问题描述Spring Cache + redis做缓存,使用的是1.8.10.RELEASE版本的spring-data-redis。在高并发下数据库存在数据但是@Cacheable 注解返回的内容是null。查看了一下源代码,在使用注解获取缓存的时候,RedisCache的get方法会先去判断key是否存在,然后再去获取值。这了就有一个漏铜,当线程1判断了key是存在的,紧接着这个时候这个k...原创 2018-07-26 15:50:28 · 4987 阅读 · 0 评论 -
springboot(21)自定义RedisConnectionFactory
@Value("${spring.redis.host}")private String redisHost;@Value("${spring.redis.port}")private int redisPort;@Value("${spring.redis.timeout}")private int redisTimeout;@Value("${spring.redis.pas...原创 2018-08-30 20:36:42 · 32142 阅读 · 4 评论 -
springboot(22)修改RedisTemplate序列化工具
使用其他序列化替代jdk序列化@Configurationpublic class RedisConfig { @Autowired private RedisConnectionFactory connectionFactory; @Primary @Bean public RedisTemplate<String,?> redi...原创 2018-08-31 18:25:01 · 829 阅读 · 0 评论 -
springboot(20)fastjson设置不序列化字节流
问题当设置fastjson为springboot的全局序列化工具后,当controller返回二进制字节流时,字节流被fastjson序列化为字符串了。@ResponseBody@RequestMapping(value = "/xx.json")public ResponseEntity<byte[]> xx(){ return xx;}原创 2018-08-21 19:43:58 · 2597 阅读 · 0 评论 -
springboot(23)ehcache读取缓存ClassCastException
现象本地IDE使用redis+ehcache缓存时,读取缓存抛出如下异常。明明是用一个类型,却发生A cannot be cast to A的ClassCastException的异常,实在是令人摸不着头脑。java.lang.ClassCastException: com.cardinfolink.saber.marketing.model.BenefitRecord cannot ...原创 2018-09-03 10:36:20 · 826 阅读 · 0 评论 -
springboot(24)@ConfigurationProperties 与 @Value
转载自简书本文链接地址: Spring Boot @ConfigurationProperties 与 @Value@ConfigurationProperties和@Value都是 Spring 提供的用于从配置文件注入配置信息的方式。很显然,@Value比较适用于配置比较少的场景,而@ConfigurationProperties则更适用于有很多配置的情况。之前写项目的时候从来都没有使用过@...转载 2018-11-02 14:21:39 · 409 阅读 · 0 评论 -
springboot(25)自定义缓存读写机制CachingConfigurerSupport
概述缓存在springboot项目中很常见,分布式项目中最常见的缓存机制就是通过redis缓存mybatis的查询数据,如下示例代码:@Configuration@EnableCachingpublic class RedisConfig extends CachingConfigurerSupport { @Bean public CacheManager redisCacheMa...原创 2019-04-14 20:33:48 · 30903 阅读 · 6 评论 -
springboot(26)HTTP连接池
服务间基于HTTP通信相对于grpc、dubbo之类的通信效率要低得多,一方面是后者的传输数据结构紧凑,使用了序列化和压缩;另一方面,后者使用了TCP连接池,而前者默认情况下每一次服务间的通信会创建一个新的HTTP请求,会产生不小的性能消耗,对于需要额外非对称加密的HTTPS请求,性能消耗更加严重。非连接池默认情况下springboot的RestTemplate使用的org.springfra...原创 2019-06-12 23:17:49 · 5838 阅读 · 2 评论 -
springboot(15)修改HTTP默认序列化工具
使用fastjson替代springboot默认的序列化工具@Configurationpublic class FormatConfig { @Bean public HttpMessageConverters fastJsonHttpMessageConverters() { FastJsonHttpMessageConverter fastConv...原创 2018-05-22 21:29:06 · 3216 阅读 · 0 评论 -
springboot(14)配置文件加密解密
jasypt-spring-boot原创 2018-05-21 19:07:08 · 9594 阅读 · 2 评论 -
springboot(2)添加jsp支持
1、maven配置springboot默认不支持jsp,要使用jsp则需要添加pom.xml支持。 pom.xml添加以下依赖dependency> groupId>javax.servletgroupId> artifactId>javax.servlet-apiartifactId> scope>providedscope>dependency>dep原创 2018-01-22 20:04:29 · 605 阅读 · 0 评论 -
springboot(3)整合mybatis
1、maven依赖向pom.xml添加如下依赖dependency> groupId>org.mybatis.spring.bootgroupId> artifactId>mybatis-spring-boot-starterartifactId> version>1.3.1version>dependency>dependency> groupId原创 2018-01-22 20:09:13 · 341 阅读 · 0 评论 -
springboot(4)添加Servlet、Listener、Filter
1、添加注解支持向springboot的入口类添加注解@ServletComponentScan。添加该注解以后,以下注解才会生效:@WebServlet 、@WebListener、@WebFilterpackage com.wxtx;import org.springframework.boot.SpringApplication;import org.springframe原创 2018-01-22 20:15:37 · 307 阅读 · 0 评论 -
springboot(5)AOP代理
1、启动aop代理添加maven依赖dependency> groupId>org.springframework.bootgroupId> artifactId>spring-boot-starter-aopartifactId>dependency>向springboot的入口类添加注解@EnableAspectJAutoProxy,使注解@Aspect生效原创 2018-01-22 20:21:50 · 425 阅读 · 0 评论 -
springboot(6)从springboot配置文件获取值
1、配置文件在application.properties中添加测试数据my.name = wxtxmy.age = 20#my.desc的实际值为hello wxtxmy.desc = hello ${my.name}my.host[0] = 127.0.0.1my.host[1] = 127.0.0.2my.host[2] = 127.0.0.32、获取值原创 2018-01-22 20:24:31 · 3606 阅读 · 0 评论 -
springboot(7)@Configuration
1、定义springboot推荐使用用java代码的形式申明注册bean。 @Configuration注解可以用java代码的形式实现spring中xml配置文件配置的效果。2、通过java代码注册bean@Configurationpublic class TestMybaitsConf { @Bean public DataSource dataSour原创 2018-01-22 20:28:04 · 12832 阅读 · 0 评论 -
springboot(8)RESTful
1、申明RESTful控制器springboot已经集成了序列化反序列化,并默认使用utf-8编码格式,不会出现中文乱码问题。@RestController为注解@ResponseBody和@Controller的组合//声明为rest风格的controller,自动对方法的返回值序列化@RestControllerpublic class TestRestAction {原创 2018-01-22 20:32:28 · 363 阅读 · 0 评论 -
springboot(9)整合thymeleaf
1、maven配置springboot默认使用thymeleaf引擎,所以配置极其简单。 添加thymeleaf依赖:dependency> groupId>org.springframework.bootgroupId> artifactId>spring-boot-starter-thymeleafartifactId>dependency>2、创建thy原创 2018-01-22 20:37:01 · 385 阅读 · 0 评论 -
springboot(10)日志记录
1、配置springboot默认使用logback日志框架。 在src/main/resources路径下创建logback.xml文件,模板见2。springboot则会自动读取该配置文件并启动logback日志框架。2、配置文件configuration debug="false"> property name=&qu原创 2018-01-22 20:39:28 · 630 阅读 · 0 评论 -
springboot(13)配置读取优先级
Spring Boot允许将配置外部化(externalize),这样你就能够在不同的环境下使用相同的代码。你可以使用properties文件,YAML文件,环境变量和命令行参数来外部化配置。使用@Value注解,可以直接将属性值注入到beans中,然后通过Spring的 Environment 抽象或通过 @ConfigurationProperties 绑定到结构化对象来访问。Spring原创 2018-01-23 19:32:35 · 1034 阅读 · 0 评论 -
springboot(11)自定义错误页面
1、默认错误页面springboot默认的错误页面极其简单,所以需要开发者自定义错误页面。 2、添加自定义错误页面在src/main路径下创建webapp文件夹,并在webapp路径下创建自定义的错误页面。 3、注册自定义错误页面@SpringBootConfigurationpublic class TestConfiguration { @Bea原创 2018-01-23 18:56:12 · 1082 阅读 · 0 评论 -
springboot(12)项目打包输出
1、输出成jar1.1、执行命令在项目所在目录的命令行执行命令mvn clean package或者通过Eclipse的maven插件执行命令clean package(如图所示)。 1.2、输出的结构刷新项目结构,target目录下会有xxx.jar和xxx.jar.original两个文件。 两者都是当前项目输出的jar文件,区别是xxx.jar打包了项目所依赖的所原创 2018-01-23 19:01:37 · 423 阅读 · 0 评论 -
springboot(1)快速搭建WEB环境
1、建立项目建议使用spring-tool-suite来建立编辑springboot项目,该版本的Eclipse比普通版本的Eclipse添加了对springboot的插件支持。 创建本地maven项目,并编辑pom.xml文件,添加如下内容 parent> groupId>org.springframework.bootgroupId> art原创 2018-01-22 20:00:12 · 395 阅读 · 0 评论