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对 需要缓存的对象进行序列化操作
相关推荐
- SpringBoot创建的是`AnnotationConfigApplicationContext`或`SpringBootApplicationContext`,它们继承自`AbstractApplicationContext`,提供了更丰富的功能。 - 应用上下文会管理所有的Bean,处理依赖注入。 6...
5. **配置Hprose**:在SpringBoot的配置类中,使用@EnableHproseServer开启Hprose服务,并配置服务接口及实现。 6. **编写业务逻辑**:在服务接口实现类中,注入Repository,调用其方法处理数据。 7. **启动服务**:...
2. **@EnableAutoConfiguration**:开启自动配置功能,可以根据类路径中的类自动配置bean。可以通过排除指定的配置类(如DataSourceAutoConfiguration)来关闭特定的自动配置。 3. **@ComponentScan**:扫描Spring...
在本项目中,我们主要探讨的是一个基于SpringBoot框架的小型应用案例,它涵盖了登录功能、数据操作(增删改查)以及Druid数据源的使用和监控。这个案例非常适合那些刚开始学习SpringBoot的开发者,可以帮助他们快速...
在本项目中,我们主要探讨如何使用SpringBoot与Elasticsearch(ES)集成,以便查询存储在ES中的日志内容。Elasticsearch是一种强大的、分布式、实时的搜索和分析引擎,常用于处理大量数据,特别是在日志管理和分析...
在本项目 "springboot_springboot_plus_" 中,我们将集成 Spring Boot 和 MyBatis-Plus,用于构建一个基于 MySQL 数据库的应用。以下是详细的步骤和知识点: 1. **创建 Spring Boot 项目** - 使用 IntelliJ IDEA ...
在"springboot登陆功能案例"中,我们将深入探讨如何在SpringBoot应用中实现用户登录功能,这对于初学者来说是一个非常实用的实践项目。 首先,我们需要了解Spring Security。Spring Security是Spring生态系统中的一...
在pom.xml中添加Spring Security依赖,然后编写一个配置类,开启Web安全并自定义登录和注销行为。 3. **用户实体与数据存储** 设计一个User实体类,包含用户名、密码、角色等字段。使用Spring Data JPA和Hibernate...
在本文中,我们将深入探讨如何将SpringBoot与MyBatis Plus进行整合,以便构建一个高效、简洁的...在实际应用中,你还可以结合其他SpringBoot特性,如自动配置、AOP、Spring Security等,进一步提升应用的功能和安全性。
- `@EnableAutoConfiguration`:开启自动配置功能,SpringBoot会根据类路径中的jar包自动配置Bean。 - `@ComponentScan`:指定组件扫描的包路径。 - `@RestController`:用于定义RESTful Web服务控制器,等同于`@...
在SpringBoot和SpringData JPA中,可以通过Repository接口实现这些功能。例如,我们可以定义一个`UserRepository`接口,继承`JpaRepository`,然后添加自定义的方法: ```java public interface UserRepository ...
在IT行业中,SpringBoot框架因其简洁的配置和快速的开发能力而备受青睐,而MyBatis作为一款轻量级的持久层框架,以其灵活的SQL映射和对象关系映射功能,深受开发者喜爱。当我们把这两者结合起来时,可以极大地提高...
使用`@SpringBootTest`和`@WebMvcTest`等注解,可以对文件上传和数据导入功能进行测试。 综上所述,Spring Boot结合Apache POI库和ORM框架,可以高效地完成Excel文件导入并入库的功能。在整个过程中,需要注意文件...
Spring Boot和Spring Cloud是现代Java开发中的两个关键框架,它们在构建微服务架构中起着至关重要的作用。Spring Boot作为Spring框架的一个子项目,旨在简化应用程序的创建和配置过程,而Spring Cloud则提供了全面的...
在本文中,我们将深入探讨如何使用IDEA、Spring Boot、MySQL和JDK 1.8来实现一个基本的用户注册和登录功能。这个项目对于初学者来说是一个很好的起点,因为它涵盖了现代Web应用开发中的核心技术和工具。 首先,让...
3. 提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等。 5. Spring Boot 的核心注解 @SpringBootApplication,它也是 Spring Boot 的核心注解,...
开启SpringBoot特性可以通过继承`spring-boot-starter-parent`或引入`spring-boot-dependencies`依赖来实现。 SpringBoot的热部署可以通过Spring Loaded或Spring-boot-devtools工具实现,当代码发生变化时,可以...
- **SpringBoot父工程**:通过继承SpringBoot的父工程,可以获取到版本管理和依赖管理的便利,避免版本冲突。 - **SpringBoot Starter POMs**:提供了一组预先配置好的依赖集合,如Spring Boot Starter Web、...
SpringBoot 的核心注解是 `@SpringBootApplication`,它实际上是三个注解的组合:`@SpringBootConfiguration`(提供了配置文件的功能),`@EnableAutoConfiguration`(开启自动配置功能),以及 `@ComponentScan`...