
SpringBoot
文章平均质量分 60
SpringBoot
码上得天下
这个作者很懒,什么都没留下…
展开
-
@ConditionalOnBean在方法上失效
先判断是不是通过@bean在方法上注入的bean,是的话推断它的类型type并返回赋值,此时会导致后面因为这里不为空且找不到指定的type而match不成功。当在类上添加注解@ConditionalOnBean上时候,由于不满足条件,返回空集。而不会导致type找不到问题。转载 2024-04-24 13:30:28 · 630 阅读 · 0 评论 -
解析springboot自动配置springmvc的秘密之DispatcherServlet
从debug调试的结果来看这个for循环中getServletContextInitializerBeans返回的集合当中果然包含了DispatcherServletRegistrationBean,那么根据之前的分析,最终必然会从其顶级父接口。的onStartup方法层层调用,一直到==》ServletRegistration中的addRegistration方法,将DispatcherServlet添加到tomcat的上下文。转载 2024-04-23 19:07:23 · 882 阅读 · 0 评论 -
细说Spring Boot初始化DispatcherServlet
在Spring Boot框架未出现之前,要开发一个基于Spring MVC框架的项目,通常需要在Java web项目的描述符文件web.xml-- 初始化Spring IoC容器 -->-- 手动配置DispatcherServlet -->-- 配置DispatcherServlet拦截路径,让所有Web请求都经过DispatcherServlet -->转载 2024-04-23 15:48:57 · 441 阅读 · 0 评论 -
SpringFactoriesLoader机制实例详解
SpringFactoriesLoader 工厂加载机制是 Spring 内部提供的一个约定俗成的加载方式,与 java spi 类似,只需要在模块的 META-INF/spring.factories 文件中,以 Properties 类型(即 key-value 形式)配置,就可以将相应的实现类注入 Spirng 容器中。Properties 类型格式:key:是全限定名(抽象类|接口)value:是实现,多个实现通过 **逗号** 进行分隔。转载 2024-04-23 13:55:35 · 553 阅读 · 0 评论 -
Spring Boot 自动装配流程(源码在哪里实现自动装配)
Spring Boot源码在哪里读取自动配置的类的?Spring Boot源码又在哪里把自动配置的类注入到IOC容器的?转载 2024-04-23 13:30:19 · 120 阅读 · 0 评论 -
【Spring Boot 源码学习】BootstrapContext的实际使用场景
本篇Huazie通过介绍的实际使用场景,并演示了引导上下文在这些场景的实际使用,加深了大家对于的启动引导过程的了解,为后续的源码分析打下基础。后续的博文,Huazie就将从的run方法入手,开始介绍的运行流程,敬请期待!转载 2024-04-22 14:13:54 · 292 阅读 · 0 评论 -
SpringBoot单元测试基类
依赖: <!--单元测试--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.2.10.RELEASE</version>原创 2021-05-17 14:44:16 · 173 阅读 · 0 评论 -
SpringBoot修改Jackson序列化方式实现数据脱敏。
对于某些接口返回的信息,涉及到敏感数据的必须进行脱敏操作,例如银行卡号、身份证号、手机号等,脱敏方式有多种方式。可以修改SQL语句,也可以写硬代码,也可以修改JSON序列化,这里介绍通过修改Jackson序列化方式实现数据脱敏。其中 OTHER类型为自定义类型,需在后面自定义脱敏的长度等。/***/@Getter/*** 中文名* *//*** 固话* *//*** 手机号* *//*** 住址* */ADDRESS,/*** 密码* */PASSWORD,转载 2023-07-10 10:41:41 · 851 阅读 · 0 评论 -
SpringBoot内嵌Tomcat原理
一般我们启动都需要单独的去安装tomcat,而Springboot自身却直接整合了Tomcat,什么原理呢?转载 2023-05-26 22:05:41 · 933 阅读 · 0 评论 -
SpringBoot配置文件中的数据映射到map和list
之前使用过@Value("${name}")来读取springboot配置文件中的配置信息,比如: @Value("${server.port}") private Integer port;后面遇到一个新问题,如果我要把配置文件中的一系列数据一下子读出来到同一个数据结构中怎么办呢?比如说读取配置信息到map或者list下面来讲述一下如何实现这个功能。springboot读取配置文件中的配置信息到map首先看配置文件要读到map中的信息:test: limitSiz.转载 2022-01-08 10:14:58 · 2178 阅读 · 0 评论 -
SpringBoot内嵌Tomcat Access log 配置
tomcat的accesslog日志 D:/logsserver.tomcat.accesslog.buffered=trueserver.tomcat.accesslog.enabled=trueserver.tomcat.accesslog.file-date-format=.yyyy-MM-ddserver.tomcat.accesslog.pattern=%a %h %m %l %u %t %r %s %S %b %D %T %Iserver.tomcat.accesslog.prefi转载 2022-01-07 23:01:03 · 1795 阅读 · 0 评论 -
Spring Boot启动原理解析
Spring Boot干货系列:(三)启动原理解析 | 嘟嘟独立技术前面几章我们见识了SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说,如果不大懂SpringBoot内部启动原理,以后难免会吃亏。所以这次博主就跟你们一起一步步揭开SpringBoot的神秘面纱,让它不在神秘。http://tengj.top/2017/03/09/springboot3/...转载 2021-11-25 11:21:58 · 95 阅读 · 0 评论 -
Spring Boot2 教程合集
Spring Boot2 教程合集https://www.javaboy.org/springboot/转载 2021-11-25 11:20:21 · 105 阅读 · 0 评论 -
spring boot 自定义@EnableXXX功能
在springboot中,我们开启一项功能是,常常用到@Enable***注解,例如@EnableAsync、@EnableCaching等等。下面我们来自己实现一个该功能。一、定义一个我们需要装配的功能/** * @author ye17186 * @version 2019/3/1 11:31 */public class MyConfiguration { @Bean public String testBean() { return "this转载 2021-11-19 22:01:04 · 585 阅读 · 0 评论 -
SpringBoot防止Xss和Sql注入攻击过滤器
package org.demo.monitor;import com.ctrip.framework.apollo.model.ConfigChangeEvent;import com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener;import lombok.extern.slf4j.Slf4j;import org.springframework.context.EnvironmentAware;im.原创 2021-11-08 16:48:47 · 1102 阅读 · 0 评论 -
SpringBoot使用protobuf格式的接口
建立SpringBoot项目,pom.xml内容如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://ma转载 2021-11-05 19:25:09 · 5412 阅读 · 4 评论 -
spring-boot-configuration-processor的作用
很多人都不知道这个包的真实作用在网上搜索了一下,一大堆都是复制粘贴的,不少博客都是说这个包是用来加载传统的xml或者properties配置,其实这都是错的。没有springboot的时候照样有方法加载。spring官网说明这个包的作用是生成配置元数据,比如你平常在yml文件里面配置server: port: 8080 #你在idea里面可以点击port,进到这个字段里面,还可以看到配置的提示信息aaa: bbb: haha # 自己自定义的就不能点击这是因为在你的资源文转载 2021-10-27 10:43:30 · 11656 阅读 · 3 评论 -
SpringBoot单元测试MockMvc添加server.servlet.context-path报404
配置文件:server.servlet.context-path=/app单元测试:@Slf4j@RunWith(SpringRunner.class)@SpringBootTest(classes = SgcApplication.class)@AutoConfigureMockMvcpublic class ControllerBaseTest { @Autowired private MockMvc mvc; private volatile Str转载 2021-09-17 19:46:35 · 867 阅读 · 0 评论 -
Spring Boot @PropertySource加载yml
public class YamlPropertySourceFactory implements PropertySourceFactory { @Override public PropertySource<?> createPropertySource(@Nullable String name, EncodedResource resource) throws IOException { Properties propertiesFromYaml = .转载 2021-09-15 17:41:58 · 285 阅读 · 0 评论 -
SpringBoot单元测试
import com.alibaba.fastjson.JSON;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.slf4j.Logger;import org.slf4j.LoggerFactory;imp...原创 2020-01-19 21:24:21 · 232 阅读 · 0 评论 -
SpringBoot基于SchedulingConfigurer 实现动态定时任务
import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.Trigger;import org.springframework.scheduling.annotation.E.原创 2021-04-29 11:53:13 · 1446 阅读 · 0 评论 -
SpringBoot的AOP是默认开启的,不需要加注解@EnableAspectJAutoProxy
@Aspect@Componentpublic class CustomerServiceInterceptor { @Before("execution(public * org.example.aop.demo..*.*(..))") public void doBefore() { System.out.println("do some important things before..."); }}另外SpringBoot默认是cgli...原创 2021-09-10 17:20:26 · 3455 阅读 · 1 评论 -
SpringBoot 线程池 ThreadPoolTaskExecutor
@Configuration@EnableAsync // 开启异步注解@Async@Slf4jpublic class ExecutorConfig { @Value("${async.executor.thread.core_pool_size:10}") private int corePoolSize; @Value("${async.executor.thread.max_pool_size:15}") private int maxPoolSize;.原创 2021-09-10 17:52:27 · 645 阅读 · 0 评论 -
SpringBoot与缓存使用及原理(下)
一 环境准备pom.xml文件中导入spring-boot-starter-cache,我这里是使用了redis做为缓存<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependenc转载 2021-09-08 14:29:55 · 97 阅读 · 0 评论 -
SpringBoot与缓存使用及原理(上)
下面我就开始介绍springboot中的缓存:首先了解下JSR107、Spring缓存抽象等等概念。一 JSR107(下面会有具体Springboot代码演示)Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry。CachingProvider定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可以在运行期访问多个CachingProvider。 CacheManager.转载 2021-09-08 14:15:43 · 260 阅读 · 0 评论 -
Spring Aop 环绕通知@Around修改目标方法参数和返回值
使用场景,多个接口的某个或多个参数都是从登录态中获取的,如下的capCode,这里只设计修改入参。@Order(1)@Component@Aspect@Slf4jpublic class CapCodeAspect { @Autowired private TokenService tokenService; public CapCodeAspect() { } @Pointcut("@annotation(com.xx.oo.annotation原创 2021-09-06 17:27:33 · 10591 阅读 · 0 评论 -
SpringBoot 缓存之 @Cacheable使用示例
启动类在加上注解@EnableCaching开启缓存注解,主要适用于整个接口返回结果需要缓存的场景,其他情况,由于业务场景比较复杂,也就是单独某段代码需要缓存,使用redis的客户端会更加灵活。@Cacheable的cacheNames可以理解为缓存key的前缀或者一级目录(redis可视化工具下)。引入依赖: <dependency> <groupId>org.springframework.boot</groupId&g...原创 2021-09-06 16:54:30 · 2566 阅读 · 0 评论 -
SpringBoot接口防刷
@Component@Slf4jpublic class FangshuaInterceptor extends HandlerInterceptorAdapter { @Autowired private RedisCache redisCache; private static final String SMY_SGC_FANGSHUA = "SGC:FANGSHUA:"; private static final String SMY_SGC_FANGSHUA..转载 2021-09-03 16:40:15 · 602 阅读 · 0 评论 -
Spring Boot 配置文件
一 配置文件类型 Spring Boot默认支持properties和yml两种格式的配置文件。yml格式是天然的树状接口,相对于properties,yml更加的一目了然。这也是我们推荐的配置文件格式。properties 格式举例server.port=8090server.session-timeout=30server.tomcat.max-threads=0server.tomcat.uri-encoding=UTF-8spring.datasource.u...转载 2021-08-30 11:04:30 · 425 阅读 · 0 评论 -
SpringBoot注解之@ConditionalOnProperty的使用
@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE, ElementType.METHOD})@Documented@Conditional({OnPropertyCondition.class})public @interface ConditionalOnProperty { String[] value() default {}; //数组,获取对应property名称的值,与name不可同时使用 St.转载 2021-08-19 11:44:55 · 564 阅读 · 0 评论 -
Druid连接池参考配置和说明
原文:Druid连接池参考配置和说明,以下是一个参考的连接池配置:通常来说,只需要修改initialSize、minIdle、maxActive。如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。分库分表较多的数据库,建议配置为false。<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy转载 2021-08-18 15:18:55 · 2653 阅读 · 0 评论 -
SpringBoot资源初始化加载的几种方式
原文:SpringBoot初始化资源的几种方式转载 2021-08-17 17:52:26 · 638 阅读 · 0 评论 -
Spring AOP 中pointcut expression表达式解析及配置
Pointcut是指那些方法需要被执行”AOP”,是由”Pointcut Expression”来描述的.Pointcut可以有下列方式来定义或者通过&& || 和!的方式进行组合.expression常用方法方法参数匹配args()@args()方法描述匹配execution()当前AOP代理对象类型匹配this()目标类匹配target()@targe...转载 2021-08-13 14:27:56 · 549 阅读 · 0 评论 -
Springboot使用MethodInterceptor和切面统一打印service层信息
package org.example.interc;import org.aopalliance.intercept.MethodInterceptor;import org.aopalliance.intercept.MethodInvocation;import org.apache.commons.lang3.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class Servic.原创 2021-08-12 17:21:52 · 1070 阅读 · 0 评论 -
spring拦截器Interceptor:HandlerInterceptor和MethodInterceptor
在Spring Boot中,拦截器可以分为两种类型:一是WebMVC,负责拦截请求,类似于过滤器,对用户的请求在Controller接收前进行处理,在Controller处理完成后加工结果等。使用时需实现HandlerInterceptor接口。 一是AOP,拦截指定类型的方法,通过动态代理模式实现,可以在方法的调用前和调用后添加功能处理。使用时需要实现MethodInterceptor接口。拦截器(Interceptor)和过滤器(Filter)对比相同点:都可以对请求进行提前处理和响转载 2021-08-12 17:10:20 · 1740 阅读 · 0 评论 -
SpringBoot炫酷的banner.txt
相信搞过springboot的同学都对下面这个logs不陌生吧:转载 2021-06-11 14:20:55 · 1478 阅读 · 1 评论 -
SpringBoot从配置文件中获取属性的四种方法
SpringBoot从配置文件中获取属性方式一: @Value基本类型属性注入,直接在字段上添加@Value("${xxx.xxx}")即可.注意这里用的是$,而不是#.@Value注入的属性,一般其他属性没有关联关系.配置文件user: name: Manaphy age: 19 sex: male@RestControllerpublic class ConfigPropertiesController { @Value("${user.name}").转载 2021-05-21 09:14:17 · 2506 阅读 · 0 评论 -
AOP系统日志入库
@Aspect@EnableAspectJAutoProxy@Componentpublic class LoggerAop { private static Logger logger = LoggerFactory.getLogger(LoggerAop.class); @Pointcut("execution(public * com.ll.common.serv...原创 2021-05-18 11:33:51 · 222 阅读 · 0 评论 -
SpringBoot接口返回数据封装
public class Result<T> implements Serializable { private static final long serialVersionUID = 9586256688859632L; private int code; private String message; private T data; p...原创 2021-05-18 11:32:46 · 437 阅读 · 0 评论 -
SpringBoot全局异常处理@RestControllerAdvice
public abstract class BaseException extends RuntimeException { private static final long serialVersionUID = 310158626341330120L; private int errorCode; BaseException() { this((Re...原创 2021-05-18 10:55:03 · 318 阅读 · 0 评论