springboot
乐乐Java路漫漫
热衷于互联网JAVA开发,对新技术的探索孜孜不倦,对问题的研究废寝忘食,希望大家一起探索
展开
-
springboot访问接口自动跳转到登陆页面问题排查
1.怀疑是某个filter进行了拦截人工排查了各个Filter,怀疑可能是漏了,使用jvisualvm对该程序进行dump分析其中的filter相关的对象,但是没有找到然后想一下,一个http请求的过程,tomcat -> engine -> host -> context -> wrapper -> ApplicationFilterChain(各种filter) ->springframework.web.servlet(DispacherServlet.原创 2021-09-09 23:03:52 · 2190 阅读 · 0 评论 -
动态代理模式&Spring AOP源码阅读
1.清楚jdk和cglib这两种动态代理模式创建代理对象的原理和代码2.要搞清楚jdk和cglib这两种代理模式产生的代理对象被调用时的执行原理和代码3.要搞清楚xml方式中aop标签底层时如何被解析及解析的结果是什么(十个BeanDefinition)4.通过画图去说明上一步解析出来的十个BeanDefinition的作用5.清楚创建aop代理对象的入口在哪及相关的类是哪个?6.清楚创建aop代理对象的流程7.清楚aop代理对象的执行流程(连接器链–MethodInterceptor/Meth原创 2021-07-12 10:23:00 · 154 阅读 · 1 评论 -
spring循环依赖问题
spring循环依赖问题:循环依赖是针对成员变量—单例才可以解决setter方法循环依赖,多例是无法解决循环依赖的- 构造器方法依赖—无法解决 - setter方法依赖—可以解决循环调用针对方法是无法解决的。@Componentpublic class CommonService { public CommonService(UserAService userAService) { this.userAService = userAService; }原创 2021-07-12 09:42:20 · 111 阅读 · 0 评论 -
aop核心概念及动态代理
spring循环依赖解决问题分息&spring aop核心概念解析&动态代理课程目标:1.明白什么是循环依赖?2.明白Spring中的循环依赖是如何解决的?3.明白Spring中的循环依赖是如何解决的?4.Spring aop核心概念详解(通知、切面、切入点等等)5.要明白aop到底是什么回事?6.要明白aop的底层原理是如何结合动态代理去实现的7.掌握动态代理的两种方式的写法三级缓存获取对象的顺序先从一级缓存中查找再从二级缓存中查找最后没有则从三级缓存中获取(Ob原创 2021-07-11 14:44:27 · 160 阅读 · 0 评论 -
spring refresh详解
@Override public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. // 容器状态设置,初始化属性设置,检查必备属性是否存在 prepareRefresh(); // Tell the subclass to原创 2021-07-10 10:00:56 · 342 阅读 · 0 评论 -
spring创建bean对象三步走
1.第一步org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#doCreateBean // bean初始化第一步:默认调用无参构造实例化Bean // 构造参数依赖注入,就是发生在这一步 if (instanceWrapper == null) { instanceWrapper = createBeanInstance(beanName, mbd, args); }2.第二原创 2021-07-09 18:41:33 · 224 阅读 · 0 评论 -
Spring bean的生命周期
bean的生命周期过程的接口Spring为容器内的bean生命周期提供了大量的扩展接口。可以实现这些接口,在Spring bean生命周期过程中对bean实例进行扩展。。ApplicationContext中bean的生命周期Spring中一个bean被创建过程的执行流程。BeanFactoryPostProcessorSpring IoC容器允许BeanFactoryPostProcessor在容器实例化任何bean之前读取bean的定义(配置元数据),并可以修改它。同时可以定义多个BeanF转载 2020-06-06 15:04:10 · 626 阅读 · 0 评论 -
Springboot的启动流程图解
SpringApplication 实例的初始化1.推断应用的类型:创建的是 REACTIVE应用、SERVLET应用、NONE 三种中的某一种2.使用 SpringFactoriesLoader查找并加载 classpath下 META-INF/spring.factories文件中所有可用的 ApplicationContextInitializer3.使用 SpringFactorie...原创 2020-03-15 12:39:32 · 1797 阅读 · 0 评论 -
springboot @Scheduled使用 任务并发进行
1.1 同一任务的同步执行(下次任务执行将在本次任务执行完毕后的下一次配置时间开始)1.2 同一任务的异步执行(下次任务将在下一个配置时间开始,不等待当前任务执行完毕)在任务运行的时候遇到问题,定时任务没15分钟执行一次,在上一次任务超过下一次任务的开始时间后才运行结束,那么下一次任务就直接跳过,到下下次的任务的时间点到达后才会执行,这就会导致部分任务没有执行,所以需要多个任务并发执行才可以。2.1 多任务并发执行首先,要想使用@Scheduled注解,首先要在启动类上添加注解@EnableSche原创 2020-09-11 09:54:30 · 998 阅读 · 0 评论 -
log4j日志配置示例
一、 Log4j简介Log4j有三个主要的组件:Loggers(记录器):日志类别和级别;Appenders (输出源):日志要输出的地方;Layouts(布局):日志以何种形式输出1.1 LoggersLoggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度,明白这一点很重要,Log4j有一个规则:原创 2020-09-22 17:08:20 · 261 阅读 · 0 评论 -
Github PageHelper 原理解析
对数据库的日常操作,都离不开增删改查。如果一次查询的纪录很多,那我们必须采用分页的方式。对于一个Springboot项目,访问和查询MySQL数据库,持久化框架可以使用MyBatis,分页工具可以使用github的 PageHelper。我们来看一下PageHelper的使用方法:@Servicepublic class UserServiceImpl implements UserService { @Resource private UserMapper userMapper;原创 2020-12-02 10:49:46 · 1553 阅读 · 0 评论 -
@Autowire 和 @Resource理解
@Resource@Resource默认按byName自动注入。既不指定name属性,也不指定type属性,则自动按byName方式进行查找。如果没有找到符合的bean,则回退为一个原始类型进行进行查找,如果找到就注入。只是指定了@Resource注解的name,则按name后的名字去bean元素里查找有与之相等的name属性的bean。只指定@Resource注解的type属性,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常。 @Resource原创 2020-08-13 18:15:43 · 276 阅读 · 0 评论 -
shardingjdbc使用详解
1.在已有的项目中添加jar包依赖<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>4.0.0-RC1</version>原创 2020-07-01 23:56:53 · 997 阅读 · 0 评论 -
springboot加载配置文件源码解析
Spring是如何加载application.properties、application.yml、application-dev.yml、application-pro.yml等等的配置文件的?先后顺序是怎么样的。1.看SpringApplication的run方法的源码/** * Run the Spring application, creating and refreshing a...原创 2020-05-03 23:39:48 · 2646 阅读 · 2 评论