
spring framework
wuhulala
这个作者很懒,什么都没留下…
展开
-
Spring循环依赖导致的Dubbo发布成功,但是服务实例却没有被增强过.
A、B循环依赖然后日志报错如下:2020-02-12 18:18:41.033 |-DEBUG [main] org.springframework.beans.factory.support.DefaultListableBeanFactory [247] -| Returning eagerly cached instance of singleton bean ‘tagServiceIm...原创 2020-02-12 18:27:00 · 420 阅读 · 0 评论 -
Spring Framework(十四)Spring Framework 获取 Bean 之 一探究竟
GetBeanByClass public <T> T getBean(Class<T> requiredType, Object... args) throws BeansException { // 1. 解析为namedBean NamedBeanHolder<T> namedBean = resolveNamedBean(required...原创 2019-12-08 21:23:16 · 495 阅读 · 0 评论 -
BeanUtils.copyProperties 导致的 ClassCastException
static class Foo { private List<String> list; public List<String> getList() { return list; } public void setList(List<String> list) { ...原创 2019-11-28 22:11:44 · 1538 阅读 · 2 评论 -
spring 事务隔离级别
假如我们当前有线程A、线程B,分别执行一个事务,假如当前的顺序是, 假如我们当前有线程A、线程B,分别执行一个事务,假如当前的顺序是,读未提交(READ_UNCOMMITTED)也称为脏读,就是一个事务可以读取另一个事务未提交的内容A事务开启,那么当前A读取的余额是300,然后减去100,更新表记录为200,当前A的事务还未提交,但是B读到了200,那么他检查余额后,直接失...原创 2018-04-18 20:23:26 · 5043 阅读 · 0 评论 -
spring mvc 父子上下文 BeanPostProcessor/BeanFactoryPostProcessor顺序
前两天遇到一个问题,就是把@EnableWebSocketMessageBroker 这个注解的Configuration在 spring 父上下文中扫描,导致了里面的后置处理器并不会处理子上下文的东西。因为在获取这些处理器的时候,都是从自己上下文的本地缓存,即那些HashMap中获取的。 比如BeanFactoryPostProcessor的获取方法//获取BeanDefinitionRegi原创 2018-01-07 22:54:36 · 709 阅读 · 0 评论 -
spring 添加properties到 environment
有点晚,先不解释,贴下代码好了/** * 将应用的properties 添加到应用环境之中 * * @author wuhulala * @version 1.0 * @since 2018/1/21 */public class EnvironmentPlaceholderConfigurer extends PropertySourcesPlaceholderConfig原创 2018-01-22 00:13:52 · 2495 阅读 · 0 评论 -
流程图解Spring Framework(十) Spring MVC如何根据请求匹配处理的?
留坑原创 2017-11-04 11:44:26 · 532 阅读 · 0 评论 -
流程图解Spring Framework(九) Spring 如何进行事务管理的?
Jdbc事务简述首先我们来了解一下JDBC的是如何处理事务的 代码很简单try { // 设置为手动提交,否则执行完一条sql就提交一次事务 conn.setAutoCommit(false); // 实际业务操作开始 ps.executeUpdate("修改表1"); ps.executeUpdate("修改表2"); // ...原创 2017-11-04 11:42:34 · 928 阅读 · 1 评论 -
流程图解Spring Framework(八) Spring 如何创建代理的--cglib?
留坑原创 2017-11-04 11:41:46 · 374 阅读 · 0 评论 -
流程图解Spring Framework(七) Spring Aop创建代理的流程?
Spring创建代理流程图代理启用声明创建代理原创 2017-11-04 11:41:10 · 495 阅读 · 0 评论 -
流程图解Spring Framework(六) Spring BeanPostProcessor如何工作的?
留坑原创 2017-11-04 11:40:21 · 308 阅读 · 0 评论 -
流程图解Spring Framework(四) Spring 如何读取使用.properties
Java读取Properties在使用properties之前,肯定要把配置加载进来,那么如果我们自己去加载Properties,其实Java内置也有properties加载工具,操作如下 public static Properties loadProps(String fileName){ Properties props = null; Input...原创 2017-11-04 11:38:18 · 519 阅读 · 0 评论 -
spring上下文启动过程
1. 启动之前的准备设置启动时间、设置关闭状态为false,启动状态为true在上下文环境中初始化占位符属性,默认空实现,在web环境中才有实现判断必需的属性是否存在,必需的属性可以通过context.getEnvironment().setRequiredProperties()设置2. 获取beanFactory执行上下文的真正刷新判断是否已经有beanfactory再刷新,如果在刷原创 2018-01-07 23:20:46 · 843 阅读 · 0 评论 -
SpringMvc动态表单 List提交
//================User=======================public class User implements Serializable{ private String name; private int age; ....}//============== userDTO==================public cl...原创 2018-02-27 15:10:02 · 2273 阅读 · 0 评论 -
初探 SpringBoot DevTools 重启应用原理
分析class文件变化如何触发了SpringBoot服务重启原创 2019-05-19 11:51:42 · 1504 阅读 · 1 评论 -
流程图解Spring Framework(十三)Spring MVC RequestMappingHandlerAdapter 是如何处理@RequestMapping的?
文章目录用法例子处理逻辑入参处理抽象处理方法@RequestParam@SessionAttribute@PathVariableHandlerMethod实际执行总结用法@RequestMapping ,应该就是我们日常代码写的最多的一个注解之一,它的作用就是将Web请求映射到请求处理类的方法。如下面例子中就是把/hello的请求映射到hello的方法里。例子下面举一个简单的需求就是接...原创 2019-03-03 11:35:37 · 1296 阅读 · 0 评论 -
流程图解Spring Framework(十一)Spring MVC WebApplicationInitializer 实现 Servlet 初始化原理
Spring MVC 4+ 实现配置DispatcherServlet有两种配置Java 硬编码,只需要实现org.springframework.web.WebApplicationInitializerpublic class MyWebApplicationInitializer implements WebApplicationInitializer { @Override...原创 2019-02-20 23:07:30 · 498 阅读 · 0 评论 -
流程图解Spring Framework(十二)Spring MVC @InitBinder 原理
文章目录介绍使用全局 WebBinderController 个性化的Binder原理binder 初始化binder 使用介绍在日常的项目中,经常会遇到页面传参和系统的实体不一致的情况,比如Date类型,页面传入参数是20180112,但是后面接受类型是Date,那么后面的接收不到这个参数,并且会报400错误。在Spring中可以使用注解@InitBinder来解决这个问题,它可以注册一系...原创 2019-02-21 23:04:50 · 1168 阅读 · 0 评论 -
Spring 多个Conditional -> Bean创建
@Bean @ConditionalOnBean(DataSource.class) // 1 @ConditionalOnProperty("xxx") //2 public String hello(){ System.out.println(">>>>>>>>>>>&原创 2018-07-10 19:54:52 · 1828 阅读 · 0 评论 -
流程图解Spring Framework(五) Spring BeanFactoryPostProcessor如何工作的?
BeanPostProcessor这个概念可以认为是在spring声明周期中留下的一个钩子,这个钩子是在所有的BeanDefinition被扫描完成之后这个阶段的。我们可以在这里做很多事情,Spring框架里面很多特性也利用了这里,比如属性注入具体在https://wuhulala.github.io/spring-test-code/流程的第五步原创 2017-11-04 11:39:18 · 600 阅读 · 0 评论 -
流程图解Spring Framework(一) spring 如何创建一个Bean的
读这一系列文章时请先看下我在github上写的spring启动过的过程https://wuhulala.github.io/spring-test-code/预想 bean这种东西,是我这次分享spring容器中最小的一个单位,它充斥在spring中的每一个小角落和大舞台之中。bean就像是人的一个个细胞一样,细胞组成生命,而bean也组成了一个spring容器。bean是个说复杂也...原创 2017-11-04 11:35:24 · 784 阅读 · 0 评论 -
Spring 事务传播行为-测试代码+源码分析
spring事务有如下七种类型REQUIRED 默认,需要事务,没有则新建REQUIRED_NEW 需要新事务,每次都新建SUPPORTS 支持事务但不强制有事务NOT_SUPPORTS 不支持事务,有事务挂起事务,执行完方法再唤醒MONDATORY 强制事务,没有事务抛出异常NEVER 当前方法不能有事务,否则抛出异常NESTED 嵌套事务,无论是否有事务都会创建一个内部事务事...原创 2018-04-15 17:11:20 · 1016 阅读 · 0 评论 -
流程图解Spring Framework(三) Spring 如何启动容器的---Java Config
留坑原创 2017-11-04 11:37:12 · 489 阅读 · 2 评论 -
流程图解Spring Framework(二) spring 如何启动容器的---XML配置
留坑原创 2017-11-04 11:36:39 · 439 阅读 · 0 评论 -
你担心spring容器中scope为prototype的bean太大内存溢出吗?
提出假设之前一直担心spring的scope为prototype的bean在一些高并发的场景下,吃不消吗,甚至会内存溢出,这样的担心不是没有道理的,(以下是假设)因为这个类型的bean每一次都会产生新的实例,如果每个实例做一些时间比较长的任务,然后它会在这段时间常驻内存。那么它会爆炸吗?* 猜想1. 非并发的场景下,是正常的。因为它执行完之后在内存回收的时候总是可以被回收的 猜想2.高原创 2017-09-19 22:18:38 · 4127 阅读 · 3 评论 -
spring aop -- 获取注解值
这两天在写安全框架 但是一直用method Invocation的话有点特别麻烦,看着不爽 用注解习惯了 现在一个需求就是我要拿到这个a方法上的printLog注解的desc值@PrintLog(desc = "i am a") public void a(){ }经过搜索引擎来一遍之后 发现了这种符合我需求的方法为了省事 我定义了这个注解的方法为切点@Before(“lo原创 2017-04-23 23:06:12 · 8553 阅读 · 0 评论 -
Spring aop-本类方法调用切面增强失效
在我们使用spring的时候,往往会遇到在本类被aop代理的时候,访问本类其他被代理的方法,发现并没有被代理。那么我们应该如何实现呢xml配置 <!--expose-proxy 暴露代理类--> <aop:aspectj-autoproxy expose-proxy="true"/> <tx:annotation-driven transaction-mana原创 2016-10-28 10:30:48 · 5219 阅读 · 3 评论 -
spring 源码-循环依赖
可能有点标题党,现在并不涉及循环依赖的源码,准备之后写。 在现实的需求中,或许我们会碰到这种需求,我中有你,你中有我。 这特么设么需求,用类A、B来表示,就是类A中有个属性B,类B中有个属性A。 那么如果把A、B放入到spring容器之中呢。。。之前碰到一次有人写了这种循环依赖的代码,但是怎么说从可读性上、理解性上都不是很好,我看了之后,抽取了一些方法逻辑,写成了三个类。因为在之前去掉了一些不原创 2017-05-11 23:57:53 · 570 阅读 · 0 评论 -
spring 加载过程中lazy-init 的使用与源码
问题引入 在springIOC容器的加载中,如果我们想让bean在我们需要的时候才加载,很明显会让spring启动的时间变快怎么办 <bean name="A" class="com.wuhulala.studySpring.A" lazy-init="true"></bean> ApplicationContext context = new ClassPathX原创 2016-10-30 19:24:25 · 1185 阅读 · 0 评论 -
Spring Aop cglib代理方法调度顺序
在spring cglib生成代理的时候是通过enhancer 的setCallbacks( Callback[] callbacks)方法 那么在使用类的方法的时候 accept()方法的返回值是int类型的,它用来指示此次指派的Callback的次序,从0开始,注意这个返回值必须小于当前指定的Callback的总个数。返回的这个值就是callback数组中的indexpublic原创 2016-11-09 17:11:58 · 1236 阅读 · 0 评论 -
Xml文件bean的读取步骤
步骤 方法 说明 调用类方法 所属类 实现类 refresh() 更新配置 ClassPathXmlApplicationContext.ClassPathXmlApplicationContext() AbstractApplicationContext 无 obtainFreshBeanFactory() 获取更新BeanFactory Clas原创 2016-10-23 11:23:41 · 718 阅读 · 0 评论 -
spring源码 - xm配置解析
1. 初始化大致单步跟了下Spring IOC的初始化过程,整个脉络很庞大,初始化的过程主要就是读取XML资源,并解析,最终注册到Bean Factory中:在完成初始化的过程后,Bean们就在BeanFactory中蓄势以待地等调用了。下面通过一个具体的例子,来详细地学习一下初始化过程,例如当加载下面一个bean:12345678转载 2016-09-24 19:38:26 · 648 阅读 · 0 评论 -
Spring与Hibernate集成中的Session问题
主要讨论Spring与Hibernate集成中的session问题1.通过getSession()方法获得session进行操作public class Test extends HibernateDaoSupport{ public void save(User user){ this.getSession().save(user); }}转载 2016-09-22 19:49:45 · 3052 阅读 · 0 评论 -
spring 针对 跨域调用的解决方案
spring cors spring 针对 跨域调用的解决方案 github地址点击查看官方文档服务端设置@CrossOrigin("http://127.0.0.1")@RestController@RequestMapping("/api")public class RestDemoController { @RequestMapping("/hello") pub原创 2016-08-16 10:47:06 · 2829 阅读 · 0 评论 -
spring注解--组合注解
这几天学习springboot 和springcloud 越来越深入,接触到了越来越多的组合注解。比如最著名的springboot 注解里的 @SpringApplication@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAuto原创 2017-04-24 20:29:48 · 1531 阅读 · 0 评论 -
spring源码之 getBean流程图
Created with Raphaël 2.1.0调用getBean方法调用AbstractBeanFactory的doGetBean方法Bean 是否 不为null并且args为null调用getObjectForBeanInstance方法判断BeanInstance是否为FactoryBean类型并且不以name为&开头返回bean判断BeanInstance不是FactoryBean类型的原创 2017-05-08 20:31:07 · 2752 阅读 · 0 评论 -
spring bean-- autowired的正确用法
这两天用idea写spring注入的时候每一次 @Autowired Worker worker;都会报黄,用过这个ide的都知道,说明你代码需要重构了。 然后提示的信息是 Spring Team recommends: “Always use constructor based dependency injection in your beans. Always use assertio原创 2017-04-27 23:07:02 · 17270 阅读 · 4 评论 -
spring 5.0.X 最新的导入idea
按照这以下的步骤导入就可以了通过 ./gradlew cleanIdea :spring-oxm:compileTestJava命令 预编译spring-oxm 模块导入Idea,根据以下操作 (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)当导入成功的原创 2017-09-17 19:44:08 · 1313 阅读 · 0 评论 -
Spring bean生命周期执行顺序
启动容器时 加载顺序原创 2017-07-11 18:53:55 · 722 阅读 · 0 评论 -
ScopedFactoryBean 入门级解析
scopedFactoryBean根据scope的注解属性,判断是否需要scoped代理 static BeanDefinitionHolder applyScopedProxyMode( ScopeMetadata metadata, BeanDefinitionHolder definition, BeanDefinitionRegistry registry) {原创 2017-09-23 10:35:52 · 2235 阅读 · 1 评论