spring
文章平均质量分 57
spring
Sxm&
java、golang、大数据、云原生
展开
-
spring-RMI及底层实现原理
Java远程方法调用,即Java RMI(Java Remote Method Invocation),是java里一种实现远程过程调用的应用程序编程接口。java RMI极大地依赖于接口。在需要创建一个远程对象时,程序员通过传递一个接口来隐藏底层的实现细节。客户端得到的远程对象句柄正好与本地的桩代码连接,由后者负责透过网络通信。这样一来,程序员只需关心如何通过自己的接口句柄发送消息。在spring中,同样提供了对RMI的支持,使得在spring下的RMI开发变得更方便。/** * 服务接口 */原创 2021-04-20 19:54:09 · 596 阅读 · 2 评论 -
Spring-Aop(添加方法日志)
springAop和AspectJ的关系Aop是一种概念,springAop、AspectJ都是Aop的实现,SpringAop有自己的语法,但是语法复杂,所以SpringAop借助了AspectJ的注解,但是底层实现还是自己的。springAop支持AspectJ1、启用@AspectJ支持要使用Java @Configuration启用@AspectJ支持,请添加@EnableAspe...原创 2020-04-01 21:14:51 · 269 阅读 · 0 评论 -
Spring-IoC之FactoryBean
一般情况下,Spring通过反射机制利用bean的class属性指定实现类来实例化bean。在某些情况下,实例化bean过程比较复杂,如果按照传统的方式,则需要在<bean>中提供大量的配置信息,配置方式的灵活性是受限的。Spring为此提供了一个org.Springframework.bean.factory.FactoryBean的工厂类接口,用户可以通过实现该接口定制实例化bea...原创 2020-01-19 11:15:37 · 158 阅读 · 0 评论 -
Spring循环依赖源码分析
关于Spring的依赖注入以及Bean的实例化过程,在Spring自动注入源码分析和Spring-IOC之实例化Bean源码及生命周期分析这俩篇文章已经讲的很清楚了。这里就不重复介绍了,主要来分析下Spring循环依赖问题。@Configuration@ComponentScan("com.su.spring.populate")public class PopulateConfig {}@Servicepublic class UserService { @Autowired原创 2020-07-30 10:05:00 · 201 阅读 · 0 评论 -
Spring自动注入源码分析
autowireByName@Configuration@ComponentScan("com.su.spring.common")public class CommonConfig {}@Servicepublic class UserService { UserDao userDao; public void query(){ System.out.println("UserService query() -----------");原创 2020-07-27 10:34:08 · 384 阅读 · 0 评论 -
Spring-IOC之实例化Bean源码及生命周期分析(Annotation)
spring的后置处理器贯穿了整个spring生命周期,包括bean的实例化和初始化过程,在这个过程中,spring会执行9次后置处理器的调用,我们来逐一分析每个后置处理器的作用吧。在此之前,spring已经完成了前期的一些工作,比如说,已经将BeanDefinition放到了BeanDefinition Map中。所以我们直接从AbstractAutowireCapableBeanFactory#createBean()方法进行分析:...原创 2020-07-21 15:10:55 · 202 阅读 · 0 评论 -
Spring-Aop流程源码分析
spring aop的整体流程思路是这样的:首先先注册一个专门处理aop的BeanPostProcess,在bean的实例化过程中,从BeanPostProcess的list列表中拿出这个处理aop的BeanPostProcess,判断该bean是否满足advise要求,如果符合,会针对该bean创建一个代理对象,最终在ioc容器中,该beanName对应的实例就是这个代理对象。如果不符合,返回的就还是原生对象。@Configuration@ComponentScan("com.su.spring.ao原创 2020-07-13 19:33:16 · 134 阅读 · 0 评论 -
ImportBeanDefinitionRegistrar解析
ImportBeanDefinitionRegistrar是spring提供的一个扩展点,和ImportSelector不同的是,ImportBeanDefinitionRegistrar提供了一个注册器registry,用于注册BeanDefinition。此外,ImportBeanDefinitionRegistrar还可以参与BeanDefinition的创建过程。Mybatis的@MapperScan扫描指定包下的接口(这些接口并没有实现类),进而完成数据库操作。底层正是基于动态代理和Import原创 2020-06-13 21:05:42 · 667 阅读 · 0 评论 -
Spring-IOC之BeanFactory(Annotation)-@Import源码分析
关于@Configuration配置类的解析,见Spring-IoC之BeanFactory(Annotation)Spring中@Import三种类型:1:ImportSelector2:ImportBeanDefinitionRegistrar3:配置类ImportSelector和ImportBeanDefinitionRegistrar都是spring提供的重要扩展点。相关文章,见@Enable模块浅析...原创 2020-06-04 19:06:26 · 144 阅读 · 0 评论 -
Spring-IoC之BeanFactory源码分析(Annotation)
public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); context.register(AppConfig.class); context.addBeanFactoryPostProcessor(new TestBeanFacto原创 2020-05-25 20:03:59 · 422 阅读 · 0 评论 -
@Enable模块浅析(ImportSelector)
通过@Enable模块,可以动态实现对一个功能的开关,下面自己实现一个@Enable组件public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); context.register(AppConfig.class); context.原创 2020-06-01 11:36:58 · 484 阅读 · 0 评论 -
ApplicationContextAwareProcessor用法解析
ApplicationContextAwareProcessor实现了BeanPostProcessor接口,在其接口方法postProcessBeforeInitialization调用了invokeAwareInterfaces(bean)。这样,IndexDao就拿到了context对象,里面具体的实现机制,参见Spring-IoC之BeanFactory(Annotation)...原创 2020-05-27 09:43:46 · 1016 阅读 · 0 评论 -
BeanFactoryPostProcessor的简单应用
在application context执行完标准初始化之后,所有bean definition都已加载,但还没有实例化任何bean。BeanFactoryPostProcessor允许插手修改context内部bean工厂,允许覆盖或添加属性。public class Test { public static void main(String[] args) { AnnotationConfigApplicationContext context =原创 2020-05-25 12:15:42 · 2633 阅读 · 0 评论 -
Spring-IoC之实例化Bean源码分析(XML)
在完成BeanDifinition加载过程之后,我们发现Bean的实例并没有被创建,那么又是在什么时机会被创建呢?来看下面这行代码:未完!原创 2020-01-16 17:07:54 · 180 阅读 · 0 评论 -
Spring-IoC之加载 BeanDefinition源码分析(XML)
BeanFactoryBeanFactory,是访问Spring bean容器的根接口,这个接口是由包含许多bean definition的对象实现的,每个bean definition都由一个字符串名惟一标识。是实现IoC根容器的顶层接口,在Spring中许多重要的组件也直接或间接的继承了BeanFactory,例如ApplicationContext:Spring是如何根据用户定义的xm...原创 2020-01-13 17:45:58 · 160 阅读 · 0 评论