springboot中的继承
一 1,配置类继承
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport ////////////类似自定义的复写配置-----一般是一整套的更换---覆盖框架默认的缓存
虽然是自动装配,但是有多套一样的功能是,智能不到选择哪一个:框架有默认的缓存,start加入了redis此时会自动装配redis,这样就有两套了,框架不会
智能到选择哪一个,所以要继承覆盖
重载继承类中的方法,set进去自定义的bean就复写框架了默认逻辑
2,普通bean的继承////////////////////类似自定义的复写配置-----一般是一个类的更换
一般bean类不继承都是自己写的,所以都是自定义的
二 有些功能的开启1,在主类--自动装配的 @springbootallpication start中有spring.factories
这个注解主要是扫描configuration类,所以可以排除一些由于jar
依赖自动引入的功能,如果不排除就会自动配置,例如数据源,权限框架的jar,此时可以用exclude
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
2,在主类 通过importsselector,或register 进来的 @Enable.... :@Enabletransaction,@mapperscan 只需打开但是不在spring.factories中,无需自己写定义配置
3,在配置类configuration @Enable... 自己配置的功能 可以在当前配置类也可放在主类
开启之后,仍可以写这个功能的配置类定义,进行默认配置的修改(或者在属性文件中修改属性)
@EnableCaching开启扫描注解,只要bean中有方法有缓存的注解就会扫描每一个bean有缓存注解@Cacheable,@CacheEvict等的时候就发起拦截,缓存
示例:
1、通过继承CachingConfigurerSupport,将Spring-Cache的缓存换为Redis
2、使用适合项目的key生成策略cacheKeyGenerator
package com.example.demo.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import java.lang.reflect.Method;
@Configuration
@EnableCaching
public class RedisConfiguration extends CachingConfigurerSupport {
@Bean
public KeyGenerator cacheKeyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object target, Method method, Object... params) {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
sb.append(obj.toString());
}
return sb.toString();
}
};
}
@Bean
public CacheManager cacheManager(@SuppressWarnings("rawtypes") RedisTemplate redisTemplate) {
return new RedisCacheManager(redisTemplate);
}
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
StringRedisTemplate template = new StringRedisTemplate(factory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
通过Jackson2JsonRedisSerializer对 需要缓存的对象进行序列化操作
相关推荐
spring-boot-中文参考手册 SpringBoot中文文档 springboot 中文 文档 ...提供大类别项目(如嵌入式服务器、安全性、度量、运行状况检查和外部化配置)中常见的一系列非功能特性。 不要代码生成,也不需要 XML 配置。
springboot整合JasperReport实现报表功能文章所需的全部资源
springboot 系统管理功能 用户 角色 机构 自己保存
SpringBoot集成ocr功能demo
SpringBoot中使用Thymeleaf的常用功能代码,SpringBoot中使用Thymeleaf的常用功能代码
Spring Boot开发手册中文版,内容全面,适合初学者学习用
SpringBoot实现定时任务的动态开启关闭,如有疑问联系wx: hsj179540
springboot 中文参考手册 对springboot讲解的非常全面,适合大家 深入理解学习springboot
springboot入门资料,全面而简洁,对应1.4.1版,适合刚接触springboot的用户
springboot整合gateway实现网关功能
一个基于SpringBoot和Vue构建的文件分享系统,包括文件的上传与下载,文件的权限管理,远程文件管理等功能。 一个基于SpringBoot和Vue构建的文件分享系统,包括文件的上传与下载,文件的权限管理,远程文件管理等...
springboot整合mybatis实现登录注册功能,springboot整合mybatis实现登录注册功能。
SpringBoot集成MySQL和Mybatis,包括sql语句和简单的案例
总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计等;详细设计主要包括系统数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对系统进行功能测试,并对测试结果...
springboot中使用quartz,包括持久化和非持久化操作 解决service注入问题 介入指定job中传入参数问题
如何在SpringBoot中使用Cookies程序员节日快乐甜点送上.pdf如何在SpringBoot中使用Cookies程序员节日快乐甜点送上.pdf如何在SpringBoot中使用Cookies程序员节日快乐甜点送上.pdf如何在SpringBoot中使用Cookies程序员...
Springboot开发_使用springboot实现发邮件功能
本案例是通过qq邮箱配置之后通过springboot结合JavaMailSenderIm 发送邮件内容.包含带有纯文本/带有附件文件的
SpringBoot中自定义拦截器示例代码SpringBoot中自定义拦截器示例代码
【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动...基于SpringBoot和MyBatis的待办清单系统源码.zip