`
y806839048
  • 浏览: 1107115 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

springboot中的继承和功能的开启

阅读更多

 

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启动时序图

    - SpringBoot创建的是`AnnotationConfigApplicationContext`或`SpringBootApplicationContext`,它们继承自`AbstractApplicationContext`,提供了更丰富的功能。 - 应用上下文会管理所有的Bean,处理依赖注入。 6...

    springboot_hprose_jpa_demo

    5. **配置Hprose**:在SpringBoot的配置类中,使用@EnableHproseServer开启Hprose服务,并配置服务接口及实现。 6. **编写业务逻辑**:在服务接口实现类中,注入Repository,调用其方法处理数据。 7. **启动服务**:...

    springboot描述.doc

    2. **@EnableAutoConfiguration**:开启自动配置功能,可以根据类路径中的类自动配置bean。可以通过排除指定的配置类(如DataSourceAutoConfiguration)来关闭特定的自动配置。 3. **@ComponentScan**:扫描Spring...

    springBoot小案例(登陆,增删改查).zip

    在本项目中,我们主要探讨的是一个基于SpringBoot框架的小型应用案例,它涵盖了登录功能、数据操作(增删改查)以及Druid数据源的使用和监控。这个案例非常适合那些刚开始学习SpringBoot的开发者,可以帮助他们快速...

    springboot项目查询es中的日志内容

    在本项目中,我们主要探讨如何使用SpringBoot与Elasticsearch(ES)集成,以便查询存储在ES中的日志内容。Elasticsearch是一种强大的、分布式、实时的搜索和分析引擎,常用于处理大量数据,特别是在日志管理和分析...

    springboot_springboot_plus_

    在本项目 "springboot_springboot_plus_" 中,我们将集成 Spring Boot 和 MyBatis-Plus,用于构建一个基于 MySQL 数据库的应用。以下是详细的步骤和知识点: 1. **创建 Spring Boot 项目** - 使用 IntelliJ IDEA ...

    springboot登陆功能案例,初学者学习案例

    在"springboot登陆功能案例"中,我们将深入探讨如何在SpringBoot应用中实现用户登录功能,这对于初学者来说是一个非常实用的实践项目。 首先,我们需要了解Spring Security。Spring Security是Spring生态系统中的一...

    基于springboot的登录注册(写的很简单,适合新手)

    在pom.xml中添加Spring Security依赖,然后编写一个配置类,开启Web安全并自定义登录和注销行为。 3. **用户实体与数据存储** 设计一个User实体类,包含用户名、密码、角色等字段。使用Spring Data JPA和Hibernate...

    springboot+mybatis plus整合案例

    在本文中,我们将深入探讨如何将SpringBoot与MyBatis Plus进行整合,以便构建一个高效、简洁的...在实际应用中,你还可以结合其他SpringBoot特性,如自动配置、AOP、Spring Security等,进一步提升应用的功能和安全性。

    springboot 入门学习笔记

    - `@EnableAutoConfiguration`:开启自动配置功能,SpringBoot会根据类路径中的jar包自动配置Bean。 - `@ComponentScan`:指定组件扫描的包路径。 - `@RestController`:用于定义RESTful Web服务控制器,等同于`@...

    springboot JPA

    在SpringBoot和SpringData JPA中,可以通过Repository接口实现这些功能。例如,我们可以定义一个`UserRepository`接口,继承`JpaRepository`,然后添加自定义的方法: ```java public interface UserRepository ...

    Boot.rar_mybatis_mybatis springboot_springboot_springboot mapper

    在IT行业中,SpringBoot框架因其简洁的配置和快速的开发能力而备受青睐,而MyBatis作为一款轻量级的持久层框架,以其灵活的SQL映射和对象关系映射功能,深受开发者喜爱。当我们把这两者结合起来时,可以极大地提高...

    SpringBoot+SpringCloud面试题.doc

    Spring Boot和Spring Cloud是现代Java开发中的两个关键框架,它们在构建微服务架构中起着至关重要的作用。Spring Boot作为Spring框架的一个子项目,旨在简化应用程序的创建和配置过程,而Spring Cloud则提供了全面的...

    idea+springboot+MySQL+jdk1.8实现简单的注册登录功能

    在本文中,我们将深入探讨如何使用IDEA、Spring Boot、MySQL和JDK 1.8来实现一个基本的用户注册和登录功能。这个项目对于初学者来说是一个很好的起点,因为它涵盖了现代Web应用开发中的核心技术和工具。 首先,让...

    SpringBoot面试题 44道.pdf

    3. 提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等。 5. Spring Boot 的核心注解 @SpringBootApplication,它也是 Spring Boot 的核心注解,...

    springboot导入Excel文件并入库

    使用`@SpringBootTest`和`@WebMvcTest`等注解,可以对文件上传和数据导入功能进行测试。 综上所述,Spring Boot结合Apache POI库和ORM框架,可以高效地完成Excel文件导入并入库的功能。在整个过程中,需要注意文件...

    SpringBoot 44道面试题和答案.docx

    开启SpringBoot特性可以通过继承`spring-boot-starter-parent`或引入`spring-boot-dependencies`依赖来实现。 SpringBoot的热部署可以通过Spring Loaded或Spring-boot-devtools工具实现,当代码发生变化时,可以...

    springboot

    - **SpringBoot父工程**:通过继承SpringBoot的父工程,可以获取到版本管理和依赖管理的便利,避免版本冲突。 - **SpringBoot Starter POMs**:提供了一组预先配置好的依赖集合,如Spring Boot Starter Web、...

    SpringBoot 20道面试题和答案.docx

    SpringBoot 的核心注解是 `@SpringBootApplication`,它实际上是三个注解的组合:`@SpringBootConfiguration`(提供了配置文件的功能),`@EnableAutoConfiguration`(开启自动配置功能),以及 `@ComponentScan`...

Global site tag (gtag.js) - Google Analytics