Spring源码(尚硅谷Spring注解版)
文章平均质量分 70
Spring源码(尚硅谷雷神Spring注解版)
Choco1ove
这个作者很懒,什么都没留下…
展开
-
Spring-Tx原理
package com.xxx.tx;import java.beans.PropertyVetoException;import javax.sql.DataSource;import org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator;import org.springframework.aop.framework.autoproxy.InfrastructureAdvisor.原创 2021-12-06 22:47:07 · 212 阅读 · 0 评论 -
Spring-AOP原理
package com.xxx.config;import org.aopalliance.aop.Advice;import org.aopalliance.intercept.MethodInterceptor;import org.springframework.aop.Advisor;import org.springframework.aop.Pointcut;import org.springframework.aop.framework.AopInfrastructureBean.原创 2021-12-06 22:32:23 · 138 阅读 · 0 评论 -
Spring注解驱动开发-容器上下文(AnnotationConfigApplicationContext)的创建
1、org.springframework.context.annotation.AnnotationConfigApplicationContext.AnnotationConfigApplicationContext(Class<?>...)/** * Create a new AnnotationConfigApplicationContext, deriving bean definitions * from the given annotated classes and ..原创 2021-02-23 22:14:30 · 1156 阅读 · 2 评论 -
Spring注解驱动开发-扩展原理
1、扩展原理内容BeanFactoryPostProcessor BeanDefinitionRegistryPostProcessor ApplicationListener @EventListener和@SmartInitializingSingleton2、关键接口分析2.1、BeanPostProcessor接口package org.springframework.beans.factory.config;import org.springframework.b.原创 2021-02-18 13:14:33 · 165 阅读 · 1 评论 -
Spring注解驱动开发-事务原理:声明式事务
声明式事务:环境搭建:1、导入相关依赖 数据源、数据库驱动、Spring-jdbc模块2、配置数据源、JdbcTemplate(Spring提供的简化数据库操作的工具)操作数据3、给方法上标注@Transactional表示当前方法是一个事务方法;4、@EnableTransactionManagement开启基于注解的事务管理功能;@EnableXXX5、配置事务管理器来控制事务; @Bean public PlatformTransactionManagertransactio.原创 2021-02-07 10:18:30 · 233 阅读 · 0 评论 -
Spring注解驱动开发-自动装配06-@Profile根据环境注册bean
/*** Profile:* Spring为我们提供的可以根据当前环境,动态的激活和切换一系列组件的功能;** 开发环境、测试环境、生产环境;* 数据源:(/A)(/B)(/C);*** @Profile:指定组件在哪个环境的情况下才能被注册到容器中,不指定,任何环境下都能注册这个组件** 1)、加了环境标识的bean,只有这个环境被激活的时候才能注册到容器中。默认是default环境* 2)、写在配置类上,只有是指定的环境的时候,整个...原创 2021-02-02 18:42:01 · 124 阅读 · 0 评论 -
Spring注解驱动开发-自动装配05-Aware注入Spring底层组件&原理
/*** 自动装配;* Spring利用依赖注入(DI),完成对IOC容器中中各个组件的依赖关系赋值;** 1)、@Autowired:自动注入:* 1)、默认优先按照类型去容器中找对应的组件:applicationContext.getBean(BookDao.class);找到就赋值* 2)、如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找* app...原创 2021-02-02 16:55:25 · 164 阅读 · 0 评论 -
Spring注解驱动开发-自动装配04-@Autowired标注在构造器,参数,方法,属性;都是从容器中获取参数组件的值
/*** 自动装配;* Spring利用依赖注入(DI),完成对IOC容器中中各个组件的依赖关系赋值;** 1)、@Autowired:自动注入:* 1)、默认优先按照类型去容器中找对应的组件:applicationContext.getBean(BookDao.class);找到就赋值* 2)、如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找* app...原创 2021-02-02 16:34:34 · 420 阅读 · 0 评论 -
Spring注解驱动开发-自动装配03-@Resource、@Inject
/*** 自动装配;* Spring利用依赖注入(DI),完成对IOC容器中中各个组件的依赖关系赋值;** 1)、@Autowired:自动注入:* 1)、默认优先按照类型去容器中找对应的组件:applicationContext.getBean(BookDao.class);找到就赋值* 2)、如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找* app...原创 2021-02-02 16:12:14 · 146 阅读 · 0 评论 -
Spring注解驱动开发-自动装配02-@Autowired、@Qualifier、@Primary
/*** 自动装配;* Spring利用依赖注入(DI),完成对IOC容器中中各个组件的依赖关系赋值;** 1)、@Autowired:自动注入:* 1)、默认优先按照类型去容器中找对应的组件:applicationContext.getBean(BookDao.class);找到就赋值* 2)、如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找* ap...原创 2021-02-02 15:53:05 · 117 阅读 · 0 评论 -
Spring注解驱动开发-属性赋值01-@Value赋值、@PropertySource读取外部配置文件
使用@Value赋值;1、基本数值2、可以写SpEL; #{}3、可以写${};取出配置文件【properties】中的值(在运行环境变量里面的值)目录1、配置类2、注册的Bean3、测试类1、配置类package com.atguigu.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configurat.原创 2021-02-02 14:19:24 · 213 阅读 · 0 评论 -
Spring注解驱动开发-生命周期04-BeanPostProcessor[interface]:bean的后置处理器-bean初始化前后进行一些处理工作
BeanPostProcessor【interface】:bean的后置处理器; 在bean初始化前后进行一些处理工作; postProcessBeforeInitialization:在初始化之前工作 postProcessAfterInitialization:在初始化之后工作目录1、配置类2、自定义的后置处理器3、测试类1、配置类package com.atguigu.config;import org.springf...原创 2021-02-02 13:53:15 · 172 阅读 · 0 评论 -
Spring注解驱动开发-生命周期03-JSR250规范:@PostConstruct[bean创建完成且属性赋值完成]和@PreDestroy[容器销毁bean之前]
使用JSR250: @PostConstruct:在bean创建完成并且属性赋值完成;来执行初始化方法 @PreDestroy:在容器销毁bean之前通知我们进行清理工作目录1、配置类2、注册的Bean3、测试类1、配置类package com.atguigu.config;import org.springframework.context.annotation.Bean;import org.springframework.c...原创 2021-02-02 12:51:52 · 290 阅读 · 0 评论 -
Spring注解驱动开发-生命周期02-InitializingBean[定义初始化逻辑]和DisposableBean[定义销毁逻辑]
通过让Bean实现InitializingBean(定义初始化逻辑),DisposableBean(定义销毁逻辑);目录1、配置类2、注册的Bean3、测试类1、配置类package com.atguigu.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.sp..原创 2021-02-02 11:15:21 · 146 阅读 · 0 评论 -
Spring注解驱动开发-生命周期01-指定初始化和销毁方法[@Bean指定init-method和destroy-method]
bean的生命周期: 对象创建---初始化----销毁的过程容器管理bean的生命周期: 我们可以自定义初始化和销毁方法;容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法实例化: 单实例:在容器启动的时候创建对象 多实例:在每次获取的时候创建对象初始化: 对象创建完成,并赋值好,调用初始化方法销毁: 单实例:容器关闭的时候 多实例:容器不会管理这个bean;容器不会调用销毁方法;目录1、配置类2、注...原创 2021-02-02 10:50:41 · 276 阅读 · 4 评论 -
Spring注解驱动开发-组件注册07-@FactoryBean-给容器中注册组件
1、配置类package com.atguigu.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.atguigu.bean.ColorFactoryBean;@Configurationpublic class MainConfig2 { /** * 给容器中注册组..原创 2021-02-01 19:11:45 · 120 阅读 · 0 评论 -
Spring注解驱动开发-组件注册06-@Import-给容器中导入组件
package com.atguigu.config;import org.springframework.beans.factory.config.ConfigurableBeanFactory;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.anno..原创 2021-02-01 18:28:44 · 186 阅读 · 0 评论 -
Spring注解驱动开发-组件注册05-@Conditional-按照条件注册bean
1、配置类package com.atguigu.config; import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Conditional;import org.springframework.context.annotation.Bean;import com.atguigu.bean.Person; @Configurat.原创 2021-01-29 15:01:44 · 121 阅读 · 0 评论 -
Spring注解驱动开发-组件注册04-@Lazy-bean懒加载
目录1、配置类2、测试类1、配置类package com.atguigu.config; import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Bean;import com.atguigu.bean.Person; @Configurationpublic class MainConfig2 { /**.原创 2020-12-14 22:29:29 · 151 阅读 · 2 评论 -
Spring注解驱动开发-组件注册03-@Scope-设置组件作用域
目录1、配置类2、测试类1、配置类package com.atguigu.config;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Bean;import com.atguigu.bean.Person;@Configurationpublic class MainConfig2 { //默认是单.原创 2020-12-14 22:20:04 · 112 阅读 · 0 评论 -
Spring注解驱动开发-组件注册02-@ComponentScan-自动扫描组件&指定扫描规则&自定义扫描规则
1、xml方式1.1 beans.xml<!-- 1、包扫描、标注了@Controller、@Service、@Repository,@Component等 2、use-default-filters="false":禁用默认扫描规则 --><context:component-scan base-package="com.atguigu" use-default-filters="false"></context:component-scan.原创 2020-12-08 00:41:46 · 190 阅读 · 0 评论 -
Spring注解驱动开发-组件注册01-@Configuration@Bean
1、xml方式1.1 beans.xml<bean id="person" class="com.atguigu.bean.Person" > <property name="age" value="18"></property> <property name="name" value="zhangsan"></property></bean>1.2 测试类package com.atguigu;imp..原创 2020-12-08 00:05:10 · 122 阅读 · 0 评论 -
Spring注解驱动开发-AOP原理
1、什么是AOPAOP:【动态代理】指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式;2、场景有一个计算器有个减法运算,在减法运算执行前后记录日志3、环境搭建1、导入aop模块;Spring AOP:(spring-aspects)<dependencies> <dependency> <groupId>org.springframework</groupId> <artifac..原创 2020-07-02 23:48:06 · 280 阅读 · 0 评论 -
Spring注解驱动开发-扩展原理之13-原理总结
1)、Spring容器在启动的时候,先会保存所有注册进来的Bean的定义信息; 1)、xml注册bean;<bean> 2)、注解注册Bean;@Service、@Component、@Bean、xxx2)、Spring容器会合适的时机创建这些Bean 1)、用到这个bean的时候;利用getBean创建bean;创建好以后保存在容器中; 2)、统一创建剩下所有的bean的时候;finishBeanFactoryInitiali...原创 2020-05-19 22:48:06 · 108 阅读 · 0 评论 -
Spring注解驱动开发-扩展原理之012-Spring容器刷新第十二步-finishRefresh()
12、finishRefresh();完成BeanFactory的初始化创建工作;IOC容器就创建完成;/** * Finish the refresh of this context, invoking the LifecycleProcessor's * onRefresh() method and publishing the * {@link org.springframework.context.event.ContextRefreshedEvent}. */ prote.原创 2020-05-19 22:45:11 · 147 阅读 · 0 评论 -
Spring注解驱动开发-扩展原理之011-Spring容器刷新第十一步-finishBeanFactoryInitialization(beanFactory)
11、finishBeanFactoryInitialization(beanFactory);初始化所有剩下的单实例bean;/*************************AbstractApplicationContext***************************//** * Finish the initialization of this context's bean factory, * initializing all remaining singleton b原创 2020-05-19 22:41:01 · 161 阅读 · 0 评论 -
Spring注解驱动开发-扩展原理之010-Spring容器刷新第十步-registerListeners()
10、registerListeners();给容器中将所有项目里面的ApplicationListener注册进来;/** * Add beans that implement ApplicationListener as listeners. * Doesn't affect other listeners, which can be added without being beans. */ protected void registerListeners() { // Reg原创 2020-05-19 21:28:06 · 114 阅读 · 0 评论 -
Spring注解驱动开发-扩展原理之009-Spring容器刷新第九步-onRefresh()
9、onRefresh();留给子容器(子类)/** * Template method which can be overridden to add context-specific refresh work. * Called on initialization of special beans, before instantiation of singletons. * <p>This implementation is empty. * @throws Beans.原创 2020-05-19 21:23:34 · 108 阅读 · 0 评论 -
Spring注解驱动开发-扩展原理之008-Spring容器刷新第八步-initApplicationEventMulticaster()
8、initApplicationEventMulticaster();初始化事件派发器/** * Initialize the ApplicationEventMulticaster. * Uses SimpleApplicationEventMulticaster if none defined in the context. * @see org.springframework.context.event.SimpleApplicationEventMulticaster */原创 2020-05-19 21:21:19 · 106 阅读 · 0 评论 -
Spring注解驱动开发-扩展原理之007-Spring容器刷新第七步-initMessageSource()
7、initMessageSource();初始化MessageSource组件(做国际化功能;消息绑定,消息解析);/** * Initialize the MessageSource. * Use parent's if none defined in this context. */ protected void initMessageSource() { //获取BeanFactory ConfigurableListableBeanFactory beanF原创 2020-05-19 21:06:15 · 156 阅读 · 0 评论 -
Spring注解驱动开发-扩展原理之006-Spring容器刷新第六步-registerBeanPostProcessors(beanFactory)
6、registerBeanPostProcessors(beanFactory);注册BeanPostProcessor(Bean的后置处理器)【 intercept bean creation】拦截Bean的创建不同接口类型的BeanPostProcessor;在Bean创建前后的执行时机是不一样的 BeanPostProcessor DestructionAwareBeanPostProcessor InstantiationAwareBea...原创 2020-05-19 17:43:58 · 110 阅读 · 0 评论 -
Spring注解驱动开发-扩展原理之005-Spring容器刷新第五步-invokeBeanFactoryPostProcessors(beanFactory)
5、invokeBeanFactoryPostProcessors(beanFactory);执行BeanFactoryPostProcessor的方法;/** * Instantiate and invoke all registered BeanFactoryPostProcessor beans, * respecting explicit order if given. * <p>Must be called before singleton instantiation原创 2020-05-18 22:23:12 · 112 阅读 · 0 评论 -
Spring注解驱动开发-扩展原理之004-Spring容器刷新第四步-postProcessBeanFactory(beanFactory)
postProcessBeanFactory(beanFactory);BeanFactory准备工作完成后进行的后置处理工作原创 2020-05-18 21:56:38 · 121 阅读 · 0 评论 -
Spring注解驱动开发-扩展原理之003-Spring容器刷新第三步-prepareBeanFactory(beanFactory)
3、prepareBeanFactory(beanFactory);BeanFactory的预准备工作(BeanFactory进行一些设置); /** * Configure the factory's standard context characteristics(属性、特性), * such as the context's ClassLoader and post-processors. * @param beanFactory the BeanFactory to con.原创 2020-05-18 21:53:45 · 126 阅读 · 0 评论 -
Spring注解驱动开发-扩展原理之002-Spring容器刷新第二步-obtainFreshBeanFactory()
2、obtainFreshBeanFactory()获取BeanFactory /** * Tell the subclass to refresh the internal bean factory. * @return the fresh BeanFactory instance * @see #refreshBeanFactory() * @see #getBeanFactory() */ protected ConfigurableListableBeanFact.原创 2020-05-18 21:53:32 · 157 阅读 · 0 评论 -
Spring注解驱动开发-扩展原理之001-Spring容器刷新第一步-prepareRefresh()
1、prepareRefresh()刷新前的预处理 /** * Prepare this context for refreshing, setting its startup date and * active flag as well as performing any initialization of property sources. */ protected void prepareRefresh() { this.startup...原创 2020-05-18 21:52:36 · 164 阅读 · 0 评论 -
Spring注解驱动开发-扩展原理之000-Spring容器创建过程
test原创 2020-05-18 19:51:47 · 204 阅读 · 0 评论