![](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. 什么是SpringMVCSpring 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 · 410 阅读 · 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常见面试题总结
Spring1.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 评论