![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
文章平均质量分 67
薇薇
爱好网络技术
展开
-
Spring集成dubbo(注解版本和xml)
注解版本服务提供方注解驱动实现定义 Dubbo 提供方外部化配置属性源 -provider-config.properties## applicationdubbo.application.name = dubbo-provider-demo## Nacos registry addressdubbo.registry.address = nacos://127.0.0.1:8848##如果要使用自己创建的命名空间可以使用下面2种方式#dubbo.registry.address .原创 2021-05-18 17:19:41 · 2105 阅读 · 1 评论 -
传统的spring项目如何集成nacos呢?
pom.xml包依赖<dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId>...原创 2021-05-18 15:57:57 · 1656 阅读 · 0 评论 -
springboot使用@EnableCaching实现缓存的使用
前言1、先要开启缓存@EnableCaching开启缓存后,就要配置一个CacheManager的实现类,用于操作使用缓存注解后,用什么具体缓存实例来对缓存进行存储;可以是基于内存的,也可以基于redis的;具体要怎么用,根据实际情况,一般工作场景redis大家走在用;2、使用具体的缓存注解@CachePut使用@CachePut标注的方法在执行前不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中。@CacheEv...原创 2021-03-18 10:37:02 · 2763 阅读 · 0 评论 -
spring Bean的生命周期以及初始化销毁过程
Bean的生命周期1、创建2、初始化3、销毁的过程自定义1、初始化和销毁方法1、指定初始化销毁方法在被声明的Bean里面自己定义初始化和销毁的方法,然后通过@Bean注解的属性,制定初始化和销毁的方法;初始化方法调用时机:在bean创建完成,然后赋值做好了以后,就会调用init方法;【具体调用流程,详见springBean创建过程】销毁:spring容器被关闭的时候;关于销毁方法的执行:需要注意只有单实例的bean,容器关闭时,才会执行销毁方法;如果b...原创 2021-03-17 17:40:31 · 1455 阅读 · 0 评论 -
spring注解开发给容器中注册组件有哪些方式?
目录1、spring自带的注解(加上具有组件功能的)2、通过在方法上面加入@Bean注解3、通过@Import注解给spring容器导入某个组件3.1 @import导入普通类3.2 ImportSelector接口的实现类3.3 ImportBeanDefinitionRegistrar接口实现类4、实现接口FactoryBean(工厂bean)默认获取getBean是获取的工厂bean的getObject实例如果要想获取到工厂Bean本身的话,需要加上&符号;原创 2021-03-17 15:18:55 · 142 阅读 · 0 评论 -
Spring4.0以后新增加的注解@Conditional的使用
1、@Conditional 注解是干什么用的?@Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件给容器注册bean。在value()方法上,使用接口Condition来进行实现的;也就是说@Conditional具体的起作用是通过接口Condition来实现的; /** * @author Phillip Webb * @since 4.0 spring4.0以后才新增的注解 * @see ConfigurationCondi...原创 2021-03-16 14:41:43 · 205 阅读 · 0 评论 -
Spring基于注解开发的注解使用之AOP(部分源代码分析02)加载过程深刻化【都是基于BeanPostProcessor后置处理器after增强的bean】
目录@EnableAspectJAutoProxy 如何工作的AnnotationAwareAspectJAutoProxyCreator注册完毕后,如何进行增强的类图结构ReflectiveMethodInvocation@EnableAspectJAutoProxy 如何工作的/** * 1、@EnableAspectJAutoProxy加上这个注解之后,为什么AOP就可以工作了呢? * 通过实现这个注解后,然后在注解中 * @Import(AspectJAutoP.原创 2021-01-29 23:30:44 · 219 阅读 · 0 评论 -
spring事件@EventListener以及@TransactionalEventListener是如何实现的【基于注解编程】
@EventListener解析1、@EventListener注解注释解释及说明1、支持基于@Order注解的排序实现2、要想支持异步@Async使用这个注解【记得在配置类上面开始异步支持哦@EnableAsync】还有其他支持具体看注解上面的说明//注解的具体实现@see EventListenerMethodProcessor@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})@Retention(RetentionP原创 2021-01-28 14:26:57 · 1524 阅读 · 0 评论 -
spring-Aware接口执行时机
第一大类ApplicationContextAwareProcessor处理也就是在bean实例化+属性设置等完成之后做的事情执行链路这个里面处理了哪些Awareprivate void invokeAwareInterfaces(Object bean) { //系统环境 if (bean instanceof EnvironmentAware) { ((EnvironmentAware) bean).setEnvironment(this.applica原创 2021-01-28 09:32:46 · 948 阅读 · 0 评论 -
spring-ApplicationListener事件监听发布使用及源码如何实现分析
总体流程1、spring-prepareBeanFactory添加ApplicationListenerDetector2、spring-initApplicationEventMulticaster,初始化事件分发器3、spring创建bean的时候,将ApplicationListener类型的bean加入到spring容器上下文以及事件分发器的属性中4、context.publishEvent实现事件发布,发布后通过spring上下文的事件分发器,然后循环事件分发器里面的事件,循环调用原创 2021-01-27 17:41:13 · 624 阅读 · 0 评论 -
spring-BeanFactoryPostProcessor/BeanDefinitionRegistryPostProcessor扩展使用【有使用方法还有原理】
1、首先看自定义的BeanFactoryPostProcessor/BeanDefinitionRegistryPostProcessor执行链路【都是一样的他们】 1)、BeanDefinitionRegistryPostProcessor执行时在BeanFactoryPostProcessor之前 2)、PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors方法里面完成的2、调用流程BeanDe...原创 2021-01-27 15:10:57 · 175 阅读 · 0 评论 -
spring-boot声明式事物使用及源码分析
环境准备1、准备配置环境pom.xml包导入<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency> <groupId>c3p0</groupId> <artifact原创 2021-01-27 13:49:01 · 117 阅读 · 0 评论 -
spring-beanFactory-创建bean,如何解决循环依赖问题解决办法;【3级缓存使用】
这篇文章有说起飞地址(点我)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactoryAbstractAutowireCapableBeanFactory类//属性//未完成的FactoryBean实例缓存:将FactoryBean名称缓存到BeanWrapperfinal ConcurrentMap<String,BeanWrapper> factoryBeanInstanceCac.原创 2021-01-26 12:57:08 · 193 阅读 · 0 评论 -
Spring基于注解开发的注解使用之AOP-ImportBeanDefinitionRegistrar接口实现类执行
在Spring中可以通过实现接口ImportBeanDefinitionRegistrar向Spring容器中注册自己的Bean第一步自定义ImportBean类,并实现ImportBeanDefinitionRegistrar接口public interface ImportBeanDefinitionRegistrar { default void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, B原创 2021-01-25 15:08:07 · 448 阅读 · 1 评论 -
Spring基于注解开发的注解(spring底层基础的注解例如@Configuration@Autowired@Required等等注解的实现支持)
AnnotationConfigApplicationContext,基于注解的分析AnnotationConfigApplicationContext初始化属性private final AnnotatedBeanDefinitionReader reader;构造函数public AnnotationConfigApplicationContext() { this.reader = new AnnotatedBeanDefinitionReader(this);//初始化.原创 2021-01-25 11:51:02 · 119 阅读 · 1 评论 -
Spring基于注解开发的注解使用之AOP(部分源代码分析)
AOP底层实现动态代理1、导入spring-aop包依赖<!--aopV1--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> <scope>test</scope></dependency><!--ao原创 2021-01-27 08:59:04 · 266 阅读 · 0 评论 -
spring循环依赖解决方案
https://www.bilibili.com/video/BV1KK4y1L7Kf?p=23视频地址总结问题:通常说被spring管理的对象,我们叫做Bean1、扫描类得到-->BeanDefinition(bean定义)2、基于class--new class //原始对象3、填充属性4、Aware5、初始化6、BeanProcessor(bean的后置处理器)7、AOP8、放入单例池第四步填充属性:A需要B,然后B需要A,这种就叫做.原创 2021-01-07 14:51:24 · 115 阅读 · 0 评论 -
spring-bean-生命周期有哪些步骤
Spring-bean生命周期有哪些步骤呢?步骤包含spring对bean的加载,解析,创建,销毁等在java代码中一切bean都是对象,但是不一定所有的对象都是bean。Bean的创建狭义class---new beanClass--填充属性-aware--初始化--aop--放入单例池广义class--beanDefinition--beanFactoryPostProcessor---new beanClass--填充属性-aware--初始化--aop--放入单例池为什么原创 2021-01-05 18:09:49 · 796 阅读 · 0 评论 -
包扫描工具类
import java.io.File;import java.io.FileFilter;import java.io.IOException;import java.net.JarURLConnection;import java.net.URISyntaxException;import java.net.URL;import java.util.Enumeration;import java.util.jar.JarEntry;import java.util.jar.Jar...原创 2021-01-05 18:08:24 · 117 阅读 · 0 评论 -
spring-bean-BeanDefinition(bean定义)
beanDefinition接口public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement属性String SCOPE_SINGLETON = "singleton";String SCOPE_PROTOTYPE = "prototype";int ROLE_APPLICATION = 0;int ROLE_SUPPORT = 1;int ROLE_INFRASTRUCTURE = 2;A原创 2021-01-05 18:07:08 · 285 阅读 · 1 评论