![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
文章平均质量分 72
wanger61
这个作者很懒,什么都没留下…
展开
-
SpringMVC常见面试题总结
1. MVC设计模式 Model:系统涉及的数据,也就是 dao 和 bean。 View:展示模型中的数据,只是用来展示。 Controller:处理用户请求都发送给 ,返回数据给视图层并展示给用户。 2. 什么是SpringMVC Spring MVC 是一款很优秀的 MVC 框架。Spring MVC 可以帮助我们进行更简洁的Web层的开发,并且它天生与 Spring 框架集成。 Spring MVC 下我们一般把后端项目分为 Service层(处理业务)、Dao层(数据库操作)、Entity层原创 2021-01-13 19:07:06 · 117 阅读 · 1 评论 -
从源码层面剖析@Transactional实现原理
1.组件注入 在SpringBoot中,通过@EnableTransactionManagement注解开启事务管理,而该注解上添加了@Import(TransactionManagementConfigurationSelector.class)注解,通过TransactionManagementConfigurationSelector向容器中注入了两个组件AutoProxyRegistrar和ProxyTransactionManagementConfiguration 其中AutoProxyRegi原创 2020-09-05 15:23:25 · 408 阅读 · 0 评论 -
从源码层面剖析SpringAOP原理(三)
这里对整个AOP的原理进行一个总结 1.创建时机 2.创建代理操作wrapIfNecessary 该步为代理类注入了匹配的切面 3.代理的方法调用 该步从代理类的各个切面中找到与方法相匹配的切面 4.Spring AOP拦截器链执行原理 5.当AOP遇到循环依赖 ...转载 2020-09-02 18:51:14 · 81 阅读 · 0 评论 -
从源码层面剖析SpringAOP原理(二)
2.代理对象的创建 ProxyFactory 上一节讲到了拦截器链的获取,接下来就执行到Object proxy = createProxy(bean.getClass(), beanName, specificInterceptors, new SingletonTargetSource(bean));来创建代理对象 该方法具体代码如下: protected Object createProxy(Class<?> beanClass, @Nullable String beanName,原创 2020-09-02 18:45:38 · 91 阅读 · 0 评论 -
从源码层面剖析SpringAOP原理(一)
1.AnnotationAwareAspectJAutoProxyCreator @EnableAspectJAutoProxy注解中调用了@Import(AspectJAutoProxyRegistrar),而AspectJAutoProxyRegistrar实现了ImportBeanDefinitionRegistrar接口,学习IOC时我们知道该接口可以用于向IOC容器中添加组件,AspectJAutoProxyRegistrar也正是通过实现该接口向容器中注册了AnnotationAwareAspe原创 2020-09-02 15:10:03 · 164 阅读 · 0 评论 -
从源码层面剖析JDK动态代理
JDK动态代理 代理对象 将Proxy.newProxyInstance(clazz.getClassLoader(), clazz.getInterfaces(), this);生成的代理类进行反编译,可以得到如下代码: //继承自Proxy类,实现原接口 public final class $Proxy4 extends Proxy implements UserService { private static Method m1; private static Method m3;转载 2020-09-02 10:47:17 · 108 阅读 · 0 评论 -
从源码层面剖析Spring如何解决循环依赖
Spring循环依赖 循环依赖过程 假设一个情景:A引用B,B引用A 核心代码: @Nullable protected Object getSingleton(String beanName, boolean allowEarlyReference) { Object singletonObject = this.singletonObjects.get(beanName); if (singletonObject == null && this.i原创 2020-09-01 15:51:27 · 133 阅读 · 0 评论 -
动态代理的两种实现方式
动态代理的两种实现方式 1.JDK动态代理 必须借助接口才能产生代理对象,必须有接口 public interface Worker { void doWork(); } public class Programmer implements Worker { @Override public void doWork() { System.out.println("工作就是写代码"); } } public class JdkProxyTest implements InvocationH转载 2020-09-01 14:54:39 · 109 阅读 · 0 评论 -
Spring常见面试题总结
Spring 1.Spring是什么? 答:Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。 2.Spring 的优点 答:(1)spring属于低侵入式设计,代码的污染极低; (2)spring的DI机制将对象之间的依赖关系交由框架处理,减低组件的耦合性; (3)Spring提供了AOP技术,支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。 (4)spring原创 2020-09-01 11:00:29 · 303 阅读 · 0 评论