
Springboot涉及概念全解
文章平均质量分 61
Springboot涉及概念全解
芒骁
用代码改变世界
展开
-
Spring及Spring boot 第四章-第二节 Spring声明式事务管理 拦截过程
通过AOP创建代理,设置回调,在执行目标方法时进行拦截,遍历回调接口,其中DynamicAdvisedInterceptor作为AOP实现的主要回调接口,跳转到它的intercept方法,开始AOP的advisor处理CglibAopProxy.DynamicAdvisedInterceptor#intercept熟悉这个AOP步骤就会知道其实就是遍历MethodIntecpter然后进行invoke而处理声明式事务专属的Advisor——BeanFactoryTransactionAttri原创 2022-07-28 10:06:52 · 349 阅读 · 0 评论 -
CGLIb 创建代理
创建代理(通过增强器和回调接口)原创 2022-07-28 10:06:30 · 438 阅读 · 0 评论 -
Spring及Spring boot 第四章-第二节 Spring声明式事务管理 解析@Transactional
这步属于粗筛,一方面我们都知道@Transactional注解是可以加到方法或者类上的,粗筛会通过把这个类上的所有注解都遍历一下看有没有Transactional.Class类型的注解,只做这一件事,返回个true或者false,不属于真正对@Transactional的处理。@Transactional和@Aspect获取Advisor的不同之处在于它的Advisor一开始便是以Bean的形式存在,不需要通过解析@Aspect注解来将方法转化为Advisor。...原创 2022-07-28 10:05:10 · 535 阅读 · 0 评论 -
Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transactional
@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface Transactional { @AliasFor("transactionManager") String value() default ""; @AliasFor("value") String transactionMa原创 2022-07-28 10:04:20 · 241 阅读 · 0 评论 -
Spring 声明式事务 事务功能实现
TransactionDefinition封装了事务实现需要的隔离级别、传播行为、超时时间、只读原创 2022-07-28 10:03:45 · 2406 阅读 · 0 评论 -
Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现
Springboot AOP的意义在于对某个过程的监管,我们熟知的日志技术以及这里的事务管理。这也是声明式事务管理 aop实现过程的意义。doService();加入aopoperation_beforeService();doService();operation_afterService();熟悉事务你就会明白事务的特性在于保证一系列操作的整体有效性,而不是某条语句,这和aop思想不谋而合,aop思想就可以通过将一系列操作织入到具体的流程当中来保证整体的有效性。二者的意义具有共同原创 2022-07-28 10:03:20 · 448 阅读 · 0 评论 -
Spring及Spring boot 第二章 AOP
AOP是对OOP的补充实现。OOP的执行单元是类,而AOP的执行单元是切面。原创 2022-07-28 10:02:03 · 149 阅读 · 0 评论 -
Spring及Spring boot 第二章 AOP 源码 AopProxy系列
CglibAopProxygetProxy获得Proxypublic Object getProxy(@Nullable ClassLoader classLoader) { if (logger.isTraceEnabled()) { logger.trace("Creating CGLIB proxy: " + this.advised.getTargetSource()); } try { Cl..原创 2022-07-28 10:00:27 · 239 阅读 · 0 评论 -
WebApplicationType#deduceFromClasspath
其实就是从类路径中找这几个类,找到了就说明是SERVLET,没找到时其他处理,一般导入web场景是找到的。 static WebApplicationType deduceFromClasspath() { if (ClassUtils.isPresent("org.springframework.web.reactive.DispatcherHandler", (ClassLoader)null) && !ClassUtils.isPresent("org.sp.原创 2022-07-28 09:50:01 · 463 阅读 · 0 评论 -
Spring及Spring boot java程序访问数据库 JDBC DriverManager
java的包下getConnection(String url, String user, String password) /** * Attempts to establish a connection to the given database URL. * The <code>DriverManager</code> attempts to select an appropriate driver from * the set of.原创 2022-05-15 14:31:59 · 728 阅读 · 0 评论 -
Spring及Spring boot java程序访问数据库 JDBC Driver接口及Driver实现类
java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现。在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类(java.sql.DriverManager)去调用这些Driver实现。com.mysql.cj.jdbc.Driver到底有什么用?在我们编写JDBC以及之后的ORM框架中我们都会定义这四个Property,那么 com.mysql.cj.jdbc.Driver的背后含义原创 2022-05-15 14:31:42 · 1620 阅读 · 0 评论 -
Spring及Spring boot java程序访问数据库 JDBC
JDBC——规范客户端程序如何来访问数据库的应用程序接口What is JDBC?Java™ database connectivity (JDBC) is the JavaSoft specification of a standard application programming interface (API) that allows Java programs to access database management systems. The JDBC API consists of a s转载 2022-05-15 14:31:31 · 933 阅读 · 0 评论 -
AOP 拦截器作用过程
我们之前了解到通过创建代理对象集合了目标对象的方法和我们要实现的切面(Cglib通过继承目标对象的方式),所以当执行代理对象重写了目标对线的方法时,会先进入拦截。原创 2022-05-15 14:28:16 · 306 阅读 · 0 评论 -
AOP自动配置
获取AOP自动配置类解析Aop自动配置类,该导入的Bean导入可以看到AopAutoConfiguration具有两个内部@Component类AspectJAutoProxyingConfiguration和ClassProxyingConfiguration,并且AspectJAutoProxyingConfiguration配置类中又有两个内部@Component类JdkDynamicAutoProxyConfigurationCglibAutoProxyConfiguration原创 2022-05-15 14:27:56 · 296 阅读 · 0 评论 -
AOP的拦截链
之前我们看到代理对象的目标方法长这个样子,这时就出现一个问题,如果是这种实现,那么像@After和@AfterThrowing这样的Advice是如何判断定位到执行目标方法结束的时机?还是拿之前的示例来看首先是目标方法具有Advisor,然后进入MethodInvocation处理ReflectiveMethodInvocation处理然后进入ReflectiveMethodInvocation的处理,这里有一个currentInterceptorIndex的判断。很重要的一步,之后会回头说明.原创 2022-05-15 14:27:41 · 340 阅读 · 0 评论 -
AOP创建代理——基于Cglib示例
入口 AbstractAutoProxyCreator#wrapIfNecessary——如果有Advisor说明需要代理跳转到AbstractAutoProxyCreator#createProxy整个过程就是创建了一个ProxyFactory,然后填充相关信息,最终调用ProxyFactory#getProxy源码位置Spring AOP实现入口 AbstractAutoProxyCreatorProxyFactory创建AopProxy......原创 2022-05-15 14:27:08 · 339 阅读 · 0 评论 -
SpringAop获取Advisor
图示原创 2022-05-15 14:26:47 · 110 阅读 · 0 评论 -
Spring AOP的实现方式
aa原创 2022-07-28 10:01:45 · 156 阅读 · 0 评论 -
Spring及Spring boot 第二章 AOP AOP与代理
之前我们讲到AOP的意义原创 2022-05-13 22:15:32 · 334 阅读 · 0 评论 -
AOP 术语
Spring AOP的术语对初学者不友好,但是学会之后就会发现命名真的没毛病,非常形象,因为想要用一个词概括整个概念本身就是有难度的,只有在理解之后再去细品这个术语就会觉得很精妙。官方地址...原创 2022-05-13 22:14:59 · 232 阅读 · 0 评论 -
Springboot 事件监听机制实现
Springboot的事件监听机制是如何实现的总的概括来说,当运行一个Springboot程序时,也就是在你辛辛苦苦写了一个web程序,创建好了service、controller等等一系列功能模块,准备点击运行时。之后Springboot启动,之后创建容器,创建相应系统功能类去支撑一步步获取你自己编写的信息并将其转化为程序运行的各种规范元信息。一个良好的启动过程,应该具有清晰的阶段规划,每个阶段做什么,定义每个阶段应该完成的功能,因为阶段之间是递进的关系。后一个阶段又需要前一个阶段的支撑。并且在每个原创 2022-05-13 22:13:21 · 433 阅读 · 0 评论 -
Springboot 总结文
想要分析清楚Springboot,其实应该先把Spring给分析清楚,这里直接整合Spring的功能谈SpringbootSpringboot功能基于 JavaBeans 的、采用控制反转(Inversion of Control,IoC)原则的 配置管理基于JavaBean控制反转容器面向切面编程约定大于配置......原创 2022-05-13 08:28:08 · 319 阅读 · 0 评论 -
Spring及Springboot 第一章 IOC
容器和bean的关系就像企业与员工的关系一样。容器重点要解决几个问题:(1) Bean的生命周期Bean从创建到销毁的全过程(2)原创 2022-05-13 08:28:37 · 329 阅读 · 0 评论 -
Spring及Spring boot 第二章 AOP 总结文
AOP的实现分为三个部分:目标对象代理对象Advisor原创 2022-05-13 08:28:58 · 770 阅读 · 0 评论 -
Spring及Spring boot 第五章 数据访问
Springboot 是如何实现数据访问的相关功能?原创 2022-05-13 08:30:24 · 128 阅读 · 0 评论 -
Spring及Spring boot Spring声明式事务管理 总结文
Spring声明式事务因为综合了四个方面知识点,所以会显的复杂,其实梳理一下,总结一下也比较简单。事务注解@TransactionalAOP自动配置这是普遍技术优化所呈现的特点:通过封装非业务代码来达到方便的同时结合了更多的技术导致与底层越来越远,源码阅读越来越困难,要掌握的知识也更多。总的来说,其实还好,毕竟业务是频繁无限的,而源码总是有限的,如果这样优化带来的收益值得我们去增加源码的复杂度,那就应该去优化。如果想要分析清楚Spring声明式事务,就先应该把自动配置源码的分析先放下,原创 2022-05-13 08:30:47 · 949 阅读 · 0 评论 -
Springboot第三章 Springboot启动 总结文
示例因为Spring boot的知识点非常多,一个示例不能囊括所有组件应用场景,所有就不写示例了,针对某些组件的应用写个小Demo。1. SpringApplication实例创建根据Spring Initializer创建的项目启动时可以分为两步,创建SpringApplication实例,执行springApplication.run方法,(一)SpringApplication 实例的创建1.1 web1.2 SpringApplication 实例的创建 -变量initializer原创 2022-05-13 08:29:17 · 271 阅读 · 0 评论 -
Spring MVC总结文
Tomcat启动原创 2022-05-13 08:31:14 · 107 阅读 · 0 评论 -
AbstractBeanDefinition
字段setBeanClass书接上文 要设置setBeanClass了AnnotatedGenericBeanDefinition的构造方法这里使用到了父类AbstractBeanDefinition的setBean方法 public void setBeanClass(@Nullable Class<?> beanClass) { this.beanClass = beanClass; }beanClass在AbstractBeanDefini原创 2022-05-12 19:36:45 · 525 阅读 · 0 评论 -
StandardAnnotationMetadata
字段方法使用接! static AnnotationMetadata from(Class<?> introspectedClass) { return new StandardAnnotationMetadata(introspectedClass, true); }构造方法使用 /** @deprecated */ @Deprecated public StandardAnnotationMetadata(Class<?>原创 2021-11-23 19:52:34 · 258 阅读 · 0 评论 -
AnnotationMetadata
接口,所以代码不是很多原创 2021-11-23 16:13:09 · 262 阅读 · 0 评论 -
DeferredImportSelector
实现类原创 2022-05-12 19:31:41 · 174 阅读 · 0 评论 -
@EnableAutoConfiguration
原创 2022-05-12 19:31:10 · 119 阅读 · 0 评论 -
BeanDefinitionReaderUtils
Springboot 启动场景比起之前的代码,这里算是言简意赅了拿到容器(context) 和 BeanDefinition信息,注册就完事了。这里用到了父类为什么是调用父类呢?因为beanFactory属性是私有的,只能被所属类访问。...原创 2021-11-24 16:15:53 · 209 阅读 · 0 评论 -
AbstractApplicationContext#refresh
字段refresh()1. this.prepareRefresh();这里的this是不过super又会回到 AbstractApplicationContextprepareRefresh()没什么要特别注意的,都是保证运行成功的细节。2. 对BeanFactory的一些准备工作因为之后要进行一些对Bean的操作,工欲善其事必先利其器,context就指望着Factory帮他呢。obtainFreshBeanFactory protected Configurabl原创 2022-05-12 23:30:00 · 364 阅读 · 0 评论 -
RootBeanDefinition
附录源码public class RootBeanDefinition extends AbstractBeanDefinition { @Nullable private BeanDefinitionHolder decoratedDefinition; @Nullable private AnnotatedElement qualifiedElement; volatile boolean stale; boolean allowCaching = tr原创 2022-05-12 23:30:00 · 800 阅读 · 0 评论 -
DefaultListableBeanFactory
Springboot启动场景 public void registerBeanDefinition(String beanName, BeanDefinition beanDefinition) throws BeanDefinitionStoreException { Assert.hasText(beanName, "Bean name must not be empty"); Assert.notNull(beanDefinition, "BeanDefin原创 2021-11-24 16:09:05 · 483 阅读 · 0 评论 -
@Autowired和@Resource
作者:小脑斧链接:https://www.zhihu.com/question/39356740/answer/2299259925来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。@Autowierd应用有些使用不是很重要,知道有这样的用途就行。官方地址:@Autowierd(非重点)将 @Autowierd应用于构造器上As of Spring Framework 4.3, an @Autowired annotation on such a con.转载 2022-05-12 23:30:00 · 158 阅读 · 0 评论 -
AbstractBeanFactory
protected Class<?> resolveBeanClass(final RootBeanDefinition mbd, String beanName, final Class<?>... typesToMatch) throws CannotLoadBeanClassException { try { if (mbd.hasBeanClass()) { return mbd.getBe...转载 2022-05-12 19:06:23 · 367 阅读 · 0 评论 -
BeanFactory系列
因为Springboot在启动过程中,默认创建并绑定context的是DefaultListableBeanFactory,我们以它为例它继承的父类以及实现的接口赋予它一下功能:ConfigurableBeanFactory 可以对BeanFactory的属性进行修改FactoryBeanRegistrySupport 可以对FactoryBean的处理SingletonBeanFactory 对单例Bean的处理BeanDefinitionRegistry 对BeanDefinition的处原创 2022-05-12 23:30:00 · 78 阅读 · 0 评论