![](https://img-blog.csdnimg.cn/20210101192026972.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring/SpringBoot
文章平均质量分 71
Spring/SpringBoot 相关源码
brucelwl
负责公司Java基础框架开发,Spring/SpringBoot/Netty/Dubbo/MyBatis/gRPC/Sentinel
展开
-
SpringBoot使用PropertiesLauncher加载外部jar包
使用SpringBoot的PropertiesLauncher可以优先加载外部的jar文件, 这样可以在程序运行前替换jar包,官方文档: Launching Executable Jars在启用应用程序时通过指定外部jar的目录, 再启动, 访问接口返回2.0.0版本, 说明包替换成功指定PropertiesLauncher启动类执行可以正常只加载2.0.0版本中的实现类, 这个符合预期访问资源文件, 会发现本应只从2.0.0版本中加载文件, 结果1.0.0版本中的也被加载了原创 2023-07-30 00:14:21 · 2646 阅读 · 0 评论 -
SpringMVC打印请求参数和响应数据最优方案
SpringMVC 使用RequestBodyAdvice和ResponseBodyAdvice打印请求参数和响应数据原创 2023-07-19 03:09:38 · 4319 阅读 · 3 评论 -
原来url写对了, 也可能会出现404 ??!
opentelemetry+SpringBoot 2.7.11, tomcat启动成功, 但是访问任何接口都是返回404异常问题排查, 原因: 低版本opentelemetry和高版本tomcat存在兼容问题原创 2023-05-29 00:27:49 · 773 阅读 · 0 评论 -
Springboot中使DispatcherServlet提前初始化
Springboot中可以通过配置项spring.mvc.servlet.load-on-startup=1使DispatcherServlet提前初始化原创 2022-04-27 21:29:17 · 2295 阅读 · 0 评论 -
Spring中@Autowire支持注入多个实现类的集合并排序
Spring中``@Autowire``支持注入多个实现类的集合,支持的集合类型包括,``数组``、``Collection的子类接口``、``List``、``Map``类型。并且还会对``数组``和``List``类型就行排序。原创 2022-04-27 13:44:16 · 2418 阅读 · 0 评论 -
SpringMVC对Servlet3.0异步请求的支持
SpringMVC对Servlet3.0异步请求的支持原创 2022-04-20 00:06:48 · 505 阅读 · 0 评论 -
Sentinel高可用流量控制组件-SpringMVC使用Sentinel实现流量监控
sentinel高可用流量控制组件-SpringMVC使用Sentinel实现流量监控原创 2022-04-02 21:07:55 · 1946 阅读 · 0 评论 -
Spring事务处理2-TransactionInterceptor
org.springframework.jdbc.support.JdbcTransactionManager<br/>org.springframework.transaction.interceptor.TransactionInterceptor原创 2022-03-15 00:45:02 · 1217 阅读 · 0 评论 -
Spring事务原理1-动态代理
spring中事务、缓存、@Async、aop等实现原理其实基本一致,都是通过cglib或jdk生成动态代理,然后通过拦截器执行对应的逻辑。如果同一个类中既有``@Transactional``又有``@Cacheable``生成的是同一个代理类,但是会有多个处理器``Advice``,会适配成``org.aopalliance.intercept.MethodInterceptor``,多个拦截器组成一个拦截器链,调用方法式时依次执行各个拦截器。一个典型的**责任链模式**原创 2022-03-12 22:38:40 · 3177 阅读 · 0 评论 -
SpringBoot中spring.factories配置的EnableAutoConfiguration执行顺序
SpringBoot中spring.factories指定的EnableAutoConfiguration并不是按照配置顺序执行 ! ! !原创 2022-03-09 00:01:44 · 6609 阅读 · 4 评论 -
Why choose CGLIB proxying as the default after SpringBoot 2.0
SpringBoot 2.0之后为什么选择Cglib作为默认的aop代理方式原创 2022-03-06 13:48:15 · 338 阅读 · 1 评论 -
@ControllerAdvice和@RestControllerAdvice注解使用及实现原理
1、统一异常处理;2、通过@InitBinder统一请求参数数据类型转换;原创 2022-02-18 03:54:50 · 1710 阅读 · 0 评论 -
SpringBoot配置内容协商
默认情况下,SpringBoot中SpringMVC接口返回的数据是json格式,但有些时候同样的数据我们可能需要根据请求来返回不同的格式。即同一个接口可以返回json格式,又可以返回xml格式原创 2022-02-12 02:07:25 · 808 阅读 · 0 评论 -
Spring对配置类之间继承的特殊处理
Spring对配置类之间继承的特殊处理,相关issue:SpringBoot中冗余的RequestMappingHandlerMapping配置 </br>https://github.com/spring-projects/spring-boot/issues/29682原创 2022-02-09 17:22:14 · 3163 阅读 · 4 评论 -
Spring中相同类型Bean存在多个时抛出异常分析及解决方案
Spring中相同类型Bean存在多个时,通过``@Autowired``在其他类中注入,那么在Spring启动时会抛出异常。</br>调用DefaultListableBeanFactory#getBean(java.lang.Class requiredType)也会抛出异常原创 2022-02-09 16:51:23 · 4651 阅读 · 2 评论 -
获取SpringMVC中url和执行方法的映射
SpringBoot注册了Bean RequestMappingHandlerMapping用于保存Url到Controller中执行方法的映射. 所以只要通过@Autowired获取到RequestMappingHandlerMapping对象就可以获取SpringMVC中url和执行方法的映射.原创 2022-02-09 00:54:45 · 973 阅读 · 0 评论 -
SpringBoot中java.class.path返回的是SpringBoot jar
SpringBoot中System.getProperty(“java.class.path”)返回的是SpringBoot jar, 而不是在外部化部署中返回的加载的jar集合.参考官方文档 https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html原创 2022-01-23 13:28:34 · 548 阅读 · 0 评论 -
java原生和SpringBoot读取jar包中MANIFEST.MF的方式
java原生和SpringBoot读取jar包中MANIFEST.MF的方式原创 2022-01-20 22:45:31 · 5780 阅读 · 0 评论 -
Spring对使用@Configuration @Component的类中 “内部类的特殊处理”
Spring对使用@Configuration @Component的类中 “内部类的特殊处理”原创 2021-12-20 12:01:40 · 3262 阅读 · 3 评论 -
使用@Component会导致spring.factories中的EnableAutoConfiguration无效
本文基于SpringBoot 2.6.0 分析,使用@Component会导致spring.factories中的EnableAutoConfiguration无效原创 2021-12-20 11:49:53 · 4990 阅读 · 0 评论 -
SpringBoot配置logback.xml,控制台设置彩色字体,按日志级别划分log文件
1. 按照日志级别输出到不同日志文件 2. 控制台日志设置和SpringBoot同风格彩色字体样式 3. 指定该包下的日志都打印在customAppender中指定的文件路径 4. 启动后不变的日志打印到单独的包,例如环境变量打印到environment.log中原创 2021-12-01 00:46:10 · 3539 阅读 · 0 评论 -
SpringBoot动态修改日志级别
SpringBoot动态修改日志级别原创 2021-09-01 13:23:18 · 1252 阅读 · 0 评论 -
SpringBoot @ConfigurationProperties作用及属性讲解
本文主要讲解``@ConfigurationProperties``注解中的几个属性作用. 及两种使用方式:1. 使用在类上2. 使用在方法上原创 2021-08-03 20:19:14 · 7172 阅读 · 0 评论 -
Spring中@AliasFor注解的作用及原理
Spring中@AliasFor注解的作用及实心原理原创 2021-07-17 19:33:43 · 3701 阅读 · 4 评论 -
SpringBoot工程生成excel,并下载文件
java代码生成excel其实比较简单,通过poi第三方库就能轻松实现,记得上次做excel报表功能大概还是两年半之前。没想到上周又有了生成excel实现下载的功能。看似常见的代码还是有必要积累一下。<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.原创 2021-06-11 21:14:31 · 722 阅读 · 0 评论 -
如何让springboot工程中自定义配置项在idea中提示
Springboot工程中添加如下依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional></dependency>其实这个功能是idea插件原创 2021-05-30 23:17:43 · 1883 阅读 · 5 评论 -
SpringBoot中如何扩展外部化配置中心
Environment实现原理在基于SpringBoot开发的应用中,我们常常会在application.properties、application-xxx.properties、application.yml、application-xxx.yml等配置文件中设置一些属性值,然后通过@Value、@ConfigurationProperties等注解获取,或者采用编码的方式通过Environment获取。# application.propertiesmy.config.appId=demo@原创 2021-03-13 14:46:02 · 608 阅读 · 0 评论 -
Spring中SmartLifecycle和Lifecycle的作用和区别
详解Spring中SmartLifecycle和Lifecycle的作用和区别,以及如何控制Lifecycle的优先级原创 2021-03-07 18:00:15 · 3156 阅读 · 15 评论 -
Spring中@DependsOn注解的作用及实现原理
当前bean所依赖的bean。任何指定的bean都保证由容器在这个bean之前创建。在bean不是通过属性或构造函数参数显式依赖于另一个bean,而是依赖于另一个bean初始化的副作用的情况下很少使用。depends-on声明既可以指定初始化时间依赖,也可以指定相应的销毁时间依赖(仅在单例bean的情况下)。在销毁给定bean之前,首先销毁定义与给定bean的依赖关系的依赖bean。因此,depends-on声明也可以控制关闭顺序。可用于任何直接或间接带注释的类org.springframework.s原创 2021-02-11 18:20:33 · 3654 阅读 · 11 评论 -
Spring中Bean的生命周期
3.1 Spring Bean中初始方法和销毁方法的执行顺序构造方法Aware 接口方法,见AbstractAutowireCapableBeanFactory.initializeBean()和ApplicationContextAwareProcessor@PostConstruct 注解的方法InitializingBean 接口方法@Bean(initMethod=”customInitMethod”)SmartInitializingSingleton 接口方法@PreDestro原创 2021-01-31 17:22:47 · 407 阅读 · 2 评论 -
Spring容器生命周期
Spring容器生命周期执行ConfigurableApplicationContext.refresh() 方法是Spring容器生命周期开始的主要入口点. 而调用BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor两个后置处理是最重要的一个步骤,因为其会触发ConfigurationClassPostProcessor执行postProcessBeanDefinitionRegistry(BeanDefinitionRegistry原创 2021-01-31 17:11:59 · 3147 阅读 · 0 评论 -
SpringBoot启动流程
1 SpringBoot启动流程该图描述了SpringBoot启动过程中所需要的大致流程,链接地址:https://upload-images.jianshu.io/upload_images/6912735-51aa162747fcdc3d.png?imageMogr2/auto-orient/strip1.1 SpringApplication构造方法初始化1.1.1 SpringBoot应用类型推断SpringBoot2.0 支持响应式编程,因此为了能够区分不同的应用,SpringBoot通原创 2021-01-31 15:48:20 · 649 阅读 · 2 评论 -
SpringBoot源码浅析
目录1 SpringBoot启动流程 31.1 SpringApplication构造方法初始化 31.1.1 SpringBoot应用类型推断 31.1.2 从spring.factories文件加载初始化器和监听器 31.1.3 解析main方法所在类 51.1.4 SpringBoot中组件排序规则 51.2 springApplication.run(String… arg)方法执行 61.2.1 StopWatch start 开启应用启动计时器 61.2.2 配置java.aw原创 2021-01-31 15:20:33 · 311 阅读 · 0 评论 -
SpringBoot 2.4.0 org.apache.maven.plugin.MojoExecutionException: Input length = 1
SpringBoot 2.4.0开始,升级了maven-resources-plugin到3.2.0版本,但是编译时却出现了如下异常:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on project demo: Input length = 1 -> [Help 1]org.apache.maven.lifecyc原创 2020-12-09 09:31:35 · 5539 阅读 · 7 评论 -
Spring中@Lookup功能及实现原理
Spring中@Lookup功能及实现原理原创 2020-09-12 20:16:07 · 981 阅读 · 1 评论 -
SpringBoot2中使用Lettuce 拓扑刷新问题
Lettuce 拓扑刷新问题原创 2020-09-12 19:07:37 · 13346 阅读 · 12 评论 -
Spring中@Autowire,@Value 注解实现原理
Spring中@Value 注解实现原理原创 2020-09-06 13:46:33 · 2498 阅读 · 0 评论 -
Spring对循环依赖注入的处理
默认单实例情况下,通过字段循环依赖不会报错,可以互相依赖@Componentpublic class BeanA { private static final Logger logger = LoggerFactory.getLogger(BeanA.class); @Autowired private BeanB beanB; public void print() { logger.info("hello springboot !"); }原创 2020-08-08 15:06:05 · 736 阅读 · 0 评论 -
@EnableConfigurationProperties @ConfigurationProperties @ConfigurationPropertiesScan
@EnableConfigurationProperties 和 @ConfigurationProperties原创 2020-07-05 14:52:57 · 8993 阅读 · 4 评论 -
Spring中使用@Import注册一个配置类时,这个配置类不应该再使用@Component或者@Configuration注解
Spring中通过@Import注册一个配置类时,这个配置类不应该在使用@Component或者@Configuration注解原创 2020-07-04 16:46:44 · 2035 阅读 · 4 评论