面试题:说说你对spring的理解 "对spring的理解,面向aop编程的具体实现",这道面试...
\u8bf7\u4f60\u8c08\u8c08\u5bf9spring\u7684\u7406\u89e3?1.\u89e3\u91caspring\u7684ioc? \u51e0\u79cd\u6ce8\u5165\u4f9d\u8d56\u7684\u65b9\u5f0f\uff1fspring\u7684\u4f18\u70b9\uff1f
IOC\u4f60\u5c31\u8ba4\u4e3a\u4ed6\u662f\u4e00\u4e2a\u751f\u4ea7\u548c\u7ba1\u7406bean\u7684\u5bb9\u5668\u5c31\u884c\u4e86\uff0c\u539f\u6765\u9700\u8981\u5728\u8c03\u7528\u7c7b\u4e2dnew\u7684\u4e1c\u897f\uff0c\u73b0\u5728\u90fd\u662f\u6709\u8fd9\u4e2aIOC\u5bb9\u5668\u8fdb\u884c\u4ea7\u751f\uff0c\u540c
\u65f6\uff0c\u8981\u662f\u4ea7\u751f\u7684\u662f\u5355\u4f8b\u7684bean\uff0c\u4ed6\u8fd8\u53ef\u4ee5\u7ed9\u7ba1\u7406bean\u7684\u751f\u547d\u5468\u671f\uff01
spring\u7684IOC\u6709\u4e09\u79cd\u6ce8\u5165\u65b9\u5f0f \uff1a
\u7b2c\u4e00\u662f\u6839\u636e\u5c5e\u6027\u6ce8\u5165 \u4e5f\u53ebset\u65b9\u6cd5\u6ce8\u5165\uff1b
\u7b2c\u4e8c\u79cd\u662f\u6839\u636e\u6784\u9020\u65b9\u6cd5\u8fdb\u884c\u6ce8\u5165\uff1b
\u7b2c\u4e09\u79cd\u662f\u6839\u636e\u6ce8\u89e3\u8fdb\u884c\u6ce8\u5165\uff0c\u8fd9\u79cd\u65b9\u5f0f\u6211\u8ba4\u4e3a\u6bd4\u8f83\u597d\uff0c\u65b9\u4fbf\uff0c\u8981\u662fbean\u591a\u7684\u8bdd\uff0c\u4f7f\u7528\u524d\u4e24\u79cd\u65b9\u5f0f\u4f1a\u4f7f\u5f97\u914d\u7f6e\u6587\u4ef6\u8fc7\u4e8e\u81c3\u80bf\u3002
Spring\u7684\u4f18\u70b9\uff1a\u4e3b\u8981\u662f\u6839\u636e\u5b83\u7684IOC\u548cAOP\u4f53\u73b0\u7684\u3002\u6211\u611f\u89c9\u4ed6\u5c31\u662f\u628a\u6211\u4eec\u4ee5\u524d\u7528\u5230\u7684\u5de5\u5382\u6a21\u5f0f\u548c\u4ee3\u7406\u6a21\u5f0f\u8fdb\u884c\u4e86\u4e00\u4e2a\u5c01\u88c5\u3002
IOC\u4e3b\u8981\u662f\u89e3\u51b3\u4e86\u4ee3\u7801\u7684\u8026\u5408\u6027\u95ee\u9898\uff0c\u800cAOP\u662f\u9762\u5411\u5207\u9762\u7f16\u7a0b\u7684\u6700\u597d\u89e3\u91ca\uff01
2.\u89e3\u91caSpring\u4e2dIOC, DI, AOP
ioc\u5c31\u662f\u63a7\u5236\u7ffb\u8f6c\u6216\u662f\u4f9d\u8d56\u6ce8\u5165\u3002\u901a\u4fd7\u7684\u8bb2\u5c31\u662f\u5982\u679c\u5728\u4ec0\u4e48\u5730\u65b9\u9700\u8981\u4e00\u4e2a\u5bf9\u8c61\uff0c\u4f60\u81ea\u5df1\u4e0d\u7528\u53bb\u901a\u8fc7new \u751f\u6210\u4f60\u9700\u8981\u7684\u5bf9\u8c61\uff0c
\u800c\u662f\u901a\u8fc7spring\u7684bean\u5de5\u5382\u4e3a\u4f60\u957f\u751f\u8fd9\u6837\u4e00\u4e2a\u5bf9\u8c61\u3002
aop\u5c31\u662f\u9762\u5411\u5207\u9762\u7684\u7f16\u7a0b\u3002\u6bd4\u5982\u8bf4\u4f60\u6bcf\u505a\u4e00\u6b21\u5bf9\u6570\u636e\u5e93\u64cd\u4f5c\uff0c\u90fd\u8981\u751f\u6210\u4e00\u53e5\u65e5\u5fd7\u3002\u5982\u679c\uff0c\u4f60\u5bf9\u6570\u636e\u5e93\u7684\u64cd\u4f5c\u6709\u5f88\u591a\u7c7b\uff0c
\u90a3\u4f60\u6bcf\u4e00\u7c7b\u4e2d\u90fd\u8981\u5199\u5173\u4e8e\u65e5\u5fd7\u7684\u65b9\u6cd5\u3002\u4f46\u662f\u5982\u679c\u4f60\u7528aop\uff0c\u90a3\u4e48\u4f60\u53ef\u4ee5\u5199\u4e00\u4e2a\u65b9\u6cd5\uff0c\u5728\u8fd9\u4e2a\u65b9\u6cd5\u4e2d\u6709\u5173\u4e8e\u6570\u636e\u5e93\u64cd\u4f5c\u7684\u65b9\u6cd5\uff0c
\u6bcf\u4e00\u6b21\u8c03\u7528\u8fd9\u4e2a\u65b9\u6cd5\u7684\u65f6\u5019\uff0c\u5c31\u52a0\u4e0a\u751f\u6210\u65e5\u5fd7\u7684\u64cd\u4f5c\u3002
3.spring\u7684ioc/aop/\u4ee3\u7406
ioc\u662f\u63a7\u5236\u53cd\u8f6c\uff0c\u662fspring\u7684\u6838\u5fc3\u601d\u60f3\u3002\u901a\u8fc7\u9762\u5411\u63a5\u53e3\u7f16\u7a0b\u6765\u5b9e\u73b0\u5bf9\u4e1a\u52a1\u7ec4\u4ef6\u7684\u52a8\u6001\u4f9d\u8d56\u3002 aop\u662f\u9762\u5411
\u5207\u9762\u7f16\u7a0b\uff0c\u5b83\u5e76\u4e0d\u662f\u53ea\u5728spring\u6216\u8005java\u4e2d\u624d\u6709\u7684\uff0c\u5b83\u548c\u9762\u5411\u5bf9\u8c61\u7f16\u7a0b\uff08oop\uff09\u662f\u76f8\u5bf9\u800c\u8a00\u7684\u53e6\u4e00\u79cd\u7f16\u7a0b\u601d\u60f3\u3002
spring\u5728\u5b9e\u73b0aop\u7f16\u7a0b\u65f6\u5229\u7528\u7684\u662fjava\u7684\u4ee3\u7406\u673a\u5236\u3002 \u4e2a\u4eba\u89c9\u5f97java\u4ee3\u7406\u673a\u5236\u771f\u7684\u662f\u5f88\u795e\u5947\u3002\u6838\u5fc3\u5185\u5bb9\u5e76\u4e0d\u591a
4.spring\u7684ioc\u662f\u89e3\u8026,aop\u662f\u5e72\u4ec0\u4e48\u7684
AOP\u9762\u5411\u5207\u9762\u7f16\u7a0b \u5c06\u7a0b\u5e8f\u4e2d\u7684\u4ea4\u53c9\u4e1a\u52a1\u903b\u8f91\uff08\u6bd4\u5982\u5b89\u5168\uff0c\u65e5\u5fd7\uff0c\u4e8b\u52a1\u7b49\uff09\uff0c\u5c01\u88c5\u6210\u4e00\u4e2a\u5207\u9762\uff0c\u7136\u540e\u6ce8\u5165\u5230\u76ee\u6807\u5bf9\u8c61\uff08\u5177\u4f53\u4e1a\u52a1\u903b\u8f91\uff09\u4e2d\u53bb\u3002
\u6bd4\u5982\uff1a \u5f88\u591a\u65b9\u6cd5\u53ef\u80fd\u4f1a\u629b\u5f02\u5e38\uff0c\u4f60\u8981\u8bb0\u5f55\u8fd9\u4e2a\u5f02\u5e38\u5230\u65e5\u5fd7\u4e2d\u53bb\uff0c\u53ef\u4ee5\u5199\u4e2a\u62e6\u622a\u5668\u7c7b\uff0c\u5728\u8fd9\u4e2a\u7c7b\u4e2d\u8bb0\u5f55\u65e5\u5fd7\uff0c
\u5728spring.xml\u4e2d\u914d\u7f6e\u4e00\u4e2a\u5bf9\u8fd9\u4e9b\u8981\u8bb0\u5f55\u65e5\u5fd7\u7684\u65b9\u6cd5\u7684aop\u62e6\u622a\u5668 \u5728\u8fd9\u4e2a\u65b9\u6cd5\u6267\u884c\u540e\u8c03\u7528\u8fd9\u4e2a\u62e6\u622a\u5668\uff0c\u8bb0\u5f55\u65e5\u5fd7\u3002
\u8fd9\u6837\u5c31\u4e0d\u7528\u6bcf\u6b21\u629b\u5f02\u5e38\u90fd\u8981\u624b\u52a8\u8bb0\u5f55\u65e5\u5fd7\u3002 spring\u7684\u4e8b\u52a1\u7ba1\u7406\u7528\u5230\u7684\u5c31\u662faop \u8fd9\u6837\u4e5f\u53ef\u4ee5\u63d0\u9ad8\u7a0b\u5e8f\u7684\u5185\u805a\u6027\u3002
5.\u8bb2\u89e3\u4e00\u4e0bJava\u4e2dSpring\u4e2dIOC\u548cAOP
IoC\uff1a\u8bf4\u76f4\u767d\u70b9\uff0c\u5c31\u662f\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\uff08XML\u6216.properties\uff09\u6307\u5b9a\u9700\u8981\u5b9e\u4f8b\u5316\u7684JAVA\u7c7b\uff08\u7c7b\u540d\u7684\u5b8c\u6574\u5b57\u7b26\u4e32\uff09\uff0c
\u5305\u62ec\u8be5JAVA\u7c7b\u7684\u4e00\u7ec4\u521d\u59cb\u5316\u503c\uff0c\u7136\u540e\u6211\u4eec\u5728\u4ee3\u7801\u4e2d\u52a0\u8f7d\u8be5\u914d\u7f6e\u6587\u4ef6\uff0c\u7136\u540e\u901a\u8fc7 .getBean() \u51fd\u6570\u5c31\u53ef\u4ee5\u5f97\u5230\u4e00\u4e2a\u8be5JAVA\u7c7b\u7684\u5bf9\u8c61\uff0c
\u5e76\u4e14\u8be5\u5bf9\u8c61\u5df2\u7ecf\u6839\u636e\u914d\u7f6e\u6587\u4ef6\u4e2d\u6307\u5b9a\u7684\u5c5e\u6027\u503c\u8fdb\u884c\u4e86\u521d\u59cb\u5316\u3002
AOP\uff1a\u8fd9\u4e2a\u6bd4IoC\u66f4\u7b80\u5355\uff0c\u76f4\u767d\u70b9\u8bf4\u5c31\u662f\u5b9e\u73b0\u8c03\u7528\u67d0\u4e2a\u65b9\u6cd5\u4e4b\u524d\u6216/\u548c\u4e4b\u540e\uff0c\u81ea\u52a8\u6267\u884c\u4e00\u7cfb\u5217\u81ea\u5b9a\u4e49\u7684\u8bed\u53e5
6.\u7b80\u8ff0Spring\u6846\u67b6\u4e2dIOC\u548cAOP
IOC\uff1a\u63a7\u5236\u53cd\u8f6c\uff0c\u662f\u4e00\u79cd\u8bbe\u8ba1\u6a21\u5f0f\u3002\u4e00\u5c42\u542b\u4e49\u662f\u63a7\u5236\u6743\u7684\u8f6c\u79fb\uff1a\u7531\u4f20\u7edf\u7684\u5728\u7a0b\u5e8f\u4e2d\u63a7\u5236\u4f9d\u8d56\u8f6c\u79fb\u5230\u7531\u5bb9\u5668\u6765\u63a7\u5236\uff1b
\u7b2c\u4e8c\u5c42\u662f\u4f9d\u8d56\u6ce8\u5165\uff1a\u5c06\u76f8\u4e92\u4f9d\u8d56\u7684\u5bf9\u8c61\u5206\u79bb\uff0c\u5728spring\u914d\u7f6e\u6587\u4ef6\u4e2d\u63cf\u8ff0\u4ed6\u4eec\u7684\u4f9d\u8d56\u5173\u7cfb\u3002\u4ed6\u4eec\u7684\u4f9d\u8d56\u5173\u7cfb\u53ea\u5728\u4f7f\u7528\u7684\u65f6\u5019\u624d\u5efa\u7acb\u3002
AOP\uff1a\u9762\u5411\u5207\u9762\uff0c\u662f\u4e00\u79cd\u7f16\u7a0b\u601d\u60f3\uff0cOOP\u7684\u5ef6\u7eed\u3002\u5c06\u7cfb\u7edf\u4e2d\u975e\u6838\u5fc3\u7684\u4e1a\u52a1\u63d0\u53d6\u51fa\u6765\uff0c\u8fdb\u884c\u5355\u72ec\u5904\u7406\u3002\u6bd4\u5982\u4e8b\u52a1\u3001\u65e5\u5fd7\u548c\u5b89\u5168\u7b49\u3002
Spring \u7684AOP\u548cIOC\u90fd\u662f\u4e3a\u4e86\u89e3\u51b3\u7cfb\u7edf\u4ee3\u7801\u8026\u5408\u5ea6\u8fc7\u9ad8\u7684\u95ee\u9898\u3002\u4f7f\u4ee3\u7801\u91cd\u7528\u5ea6\u9ad8\u3001\u6613\u4e8e\u7ef4\u62a4\u3002
\u4e0d\u8fc7AOP\u548cIOC\u5e76\u4e0d\u662fspring\u4e2d\u7279\u6709\u7684\uff0c\u53ea\u662fspring\u628a\u4ed6\u4eec\u5e94\u7528\u7684\u66f4\u7075\u6d3b\u65b9\u4fbf \u3002
aop\uff0c\u9762\u5411\u5207\u9762\u7f16\u7a0b\uff0c\u4ed6\u7684\u6700\u5e95\u5c42\u662f\u5b9e\u73b0\u7684\u52a8\u6001\u4ee3\u7406\u8bbe\u8ba1\u6a21\u5f0f\u3002
\u4f60\u53ef\u4ee5\u628a\u8fd9\u4e2a\u8bbe\u8ba1\u6a21\u5f0f\uff0c\u8bf4\u7ed9\u4ed6\u542c\u5c31\u884c\u4e86\uff0c\u5982\u679c\u4e0d\u4e86\u89e3\u52a8\u6001\u4ee3\u7406\uff0c\u53bb\u7814\u7a76\u4e00\u4e0b\u3002
aop\u7684\u5e95\u5c42\u5c31\u662f\u8fd9\u6837\u5b9e\u73b0\u7684\u3002
原文:https://www.zhihu.com/question
Spring是一个十分庞大的体系,具体可以访问它的官网https://spring.io/projects进行详细了解。
首先,回答这个问题,可以先介绍一下Spring体系中的几个项目:
SpringFramework
SpringData
SpringSecurity
SpringBoot
SpringCloud
Bean管理
依赖注入(DI),又称为控制反转(IOC)
面向切面编程(AOP)
ClassPathXmlApplicationContext 从 classpath 加载 spring 的配置文件
FileSystemApplicationContext 从系统文件加载 spring 的配置文件
AnnotationConfigApplicationContext 获取基于注解的 spring 容器对象
XmlWebApplicationContext 在 web 环境中获取 spring 容器对象
set注入,在配置文件中使用<property>节点
set注入
构造方法注入
资源集中管理,实现资源的可配置与易管理
降低使用资源双方的依赖程度
提供声明式事务管理
Spring支持用户自定义切面
当然,除了这些之外,Spring还包括很多其他的项目。
接着,着重介绍SpringFramework这个项目,它是一个开源的Java/JavaEE全功能栈的应用程序,SpringFramework提供了一个简易的开发方式,这种开发方式可以避免使用那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。
Spring的这种低侵入式设计使代码的污染极低。
SpringFramework包括以下部分:
然后,我们再介绍一下Spring的核心概念:
①Bean管理
与传统的应用程序不同,在Spring中将对象的创建交给Spring容器来管理,也就是说只有放入Spring容器中的类,Spring才能对其产生作用。那么Spring究竟是怎样获取类的对象的呢?
要想知道这个,我们首先要弄清楚这几点:
BeanFactory是Spring容器的根接口,ApplicationContext是它的子接口,通常用它的子接口ApplicationContext来访问Spring容器。
ApplicationContext子接口常用的有四个实现类:
Spring通过BeanFactory来获取这些类的对象,在配置文件中通过<bean/>节点将类交给Spring进行管理,ApplicationContext的实现类通过getBean()方法从Spring容器中获取对象,默认为单例的。
②依赖注入
它可以降低类之间的耦合性,有两种注入方式:
· 构造方法注入,在配置文件中使用<constructor-arg>节点
下面举个例子来说明一下什么是依赖注入:
假设类A因功能F需要调用类B,传统的程序中,我们就会去new一个类B的对象,因而类A就会依赖类于类B,这就是说如果类B不存在,则类A也就无法使用。而使用依赖注入以后,类A只需要去调用实现功能F接口的一个实现类,这个实现类可能是类B,C等等,具体调用谁是有Spring的配置文件决定的,这样类A就不再依赖于类B。
我们可以这样理解控制反转:
资源不是由使用资源的双方进行管理,而是由不使用资源的第三方(即Spring容器)进行管理,这样做的好处是:
在传统程序中,当某个角色需要另外一个角色协助时,由调用者来创建被调用者的实例。而在Spring中,创建被调用者的的工作不再由调用者来完成,而由第三方Spring容器来完成,所以称为控制反转,Spring容器创建被调用者的实例,然后注入调用者,所以又称为依赖注入。
③面向切面编程
AOP在Spring中主要表现在两个方面:
面向切面编程是对面向对象编程(OOP)的补充。面向对象编程将程序分解成为各个层次的对象,面向切面编程将程序运行过程分解成各个切面。面向切面编程基于动态代理实现,降低了类直接的耦合程度。Spring的事务管理就是基于AOP实现的。
免费资源教程
spring:
1)开源框架
2)IoC(控制反转),将类的创建和依赖关系写在配置文件里,由配置文件注入,实现了松耦合
3)AOP 将安全,事务等于程序逻辑相对独立的功能抽取出来,利用spring的配置文件将这些功能插进去,实现了按照方面编程,提高了复用性
IoC和AOP是spring最重要的两个特性,面试官差不多就看这个吧,至于spring mvc之类的估计面试官不一定感兴趣
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
我只知道它是一个开源的框架
绛旓細鐢遍厤缃枃浠舵敞鍏ワ紝瀹炵幇浜嗘澗鑰﹀悎 3)AOP 灏嗗畨鍏紝浜嬪姟绛変簬绋嬪簭閫昏緫鐩稿鐙珛鐨勫姛鑳芥娊鍙栧嚭鏉ワ紝鍒╃敤spring鐨閰嶇疆鏂囦欢灏嗚繖浜涘姛鑳芥彃杩涘幓锛屽疄鐜颁簡鎸夌収鏂归潰缂栫▼锛屾彁楂樹簡澶嶇敤鎬 IoC鍜孉OP鏄痵pring鏈閲嶈鐨勪袱涓壒鎬э紝闈㈣瘯瀹樺樊涓嶅灏辩湅杩欎釜鍚э紝鑷充簬spring mvc涔嬬被鐨勪及璁¢潰璇曞畼涓嶄竴瀹氭劅鍏磋叮 ...
绛旓細姝e鍗曡瘝 鍊掔疆 鎵琛ㄦ槑鐨勶紝IOC 灏卞儚鍙 杩囨潵鐨 JNDI銆傛病鏈変娇鐢ㄤ竴鍫嗘娊璞″伐鍘傘佹湇鍔″畾浣嶅櫒銆佸崟鍏冪礌锛坰ingleton锛夊拰鐩存帴鏋勯狅紙straight construction锛夛紝姣忎竴涓璞¢兘鏄敤鍏跺崗浣滃璞℃瀯閫犵殑銆傚洜姝ゆ槸鐢卞鍣ㄧ鐞嗗崗浣滃璞★紙collaborator锛夈 Spring鍗充娇涓涓狝OP妗嗘灦锛屼篃鏄竴IOC瀹瑰櫒銆 Spring 鏈濂界殑鍦版柟鏄畠鏈夊姪浜鎮...
绛旓細涓涓鏋剁殑婧愮爜涔熸槸鏈澶х殑鐭ヨ瘑搴擄紝婧愮爜鏄竴灞備竴灞傚祵濂楃殑锛屽厜闈犳枃瀛楄鏄庝細姣旇緝闅句互鐞嗚В锛屾渶濂芥槸鍦↖DE鐜涓嬭窡鐫涓姝ヤ竴姝ヨ窡鐫鐐逛笅鍘汇傚鏋滆瀛︿範婧愮爜锛屾渶鍚堥傜殑灏辨槸Spring锛岀悊鐢卞涓嬶細闈㈣瘯甯搁棶Spring銆丼pring Boot銆丼pring Cloud銆丼pring MVC闈㈣瘯棰瑙f瀽 閽堝Spring銆丼pring Boot銆丼pring Cloud銆丼pring MVC锛...
绛旓細1.ApplicationContext鎻愪緵浜咮eanFactory鎵鑳芥彁渚涚殑鍔熻兘绠$悊锛屽寘鎷琤ean鐨勫姞杞斤紝瀹炰緥鍖栵紝缁存姢bean涔嬮棿鐨勪緷璧栧叧绯伙紝璐熻矗bean鐨勫0鏄庡懆鏈熶箣澶栵紝杩樻彁渚涗簡鏇村畬鏁寸殑妗嗘灦鍔熻兘锛歛. 鍥介檯鍖栨敮鎸 閫氳繃閰嶇疆org.springframework.context.support.ResourceBundleMessageSource b. 璧勬簮璁块棶锛歊esource rs = ctx. getResource(鈥渃lass...
绛旓細springboo鐨勪粙缁 SpringBoot鍩轰簬Spring4.0璁捐锛屼笉浠呯户鎵夸簡Spring妗嗘灦鍘熸湁鐨勪紭绉鐗规э紝鑰屼笖杩橀氳繃绠鍖栭厤缃潵杩涗竴姝ョ畝鍖栦簡Spring搴旂敤鐨勬暣涓惌寤哄拰寮鍙戣繃绋嬨傚彟澶朣pringBoot閫氳繃闆嗘垚澶ч噺鐨勬鏋朵娇寰椾緷璧栧寘鐨勭増鏈啿绐侊紝浠ュ強寮曠敤鐨勪笉绋冲畾鎬х瓑闂寰楀埌浜嗗緢濂界殑瑙e喅銆 SpringBoot妗嗘灦涓繕鏈変袱涓潪甯搁噸瑕佺殑绛栫暐锛氬紑绠卞嵆鐢ㄥ拰...
绛旓細鍦spring瀹瑰櫒鍚姩鐨勬椂鍊欙紝spring浼氭妸浣犲湪閰嶇疆鏂囦欢涓厤缃殑bean閮藉垵濮嬪寲濂斤紝鐒跺悗鍦ㄤ綘闇瑕佽皟鐢ㄧ殑鏃跺欙紝灏辨妸瀹冨凡缁忓垵濮嬪寲濂界殑閭d簺bean鍒嗛厤缁欎綘闇瑕佽皟鐢ㄨ繖浜沚ean鐨勭被锛堝亣璁捐繖涓被鍚嶆槸A锛夛紝鍒嗛厤鐨勬柟娉曞氨鏄皟鐢ˋ鐨剆etter鏂规硶鏉ユ敞鍏ワ紝鑰屼笉闇瑕佷綘鍦ˋ閲岄潰new杩欎簺bean浜嗐傛敞鎰锛氶潰璇曠殑鏃跺欙紝濡傛灉鏈夋潯浠讹紝鐢诲浘锛岃繖鏍...
绛旓細鏄捐屾槗瑙侊紝璇ユ柟娉曠鍚 @Around 鐜粫閫氱煡鐨勫尮閰嶈鍒欙紝鎵浠ヨ繘鍏ヤ簡 @Around 鐨勯昏緫锛屼絾鏄彂鐜颁簡闂锛屾墍鏈夌殑鏂规硶閮借鎵ц浜2娆★紝涓嶇鏄垏闈㈠眰杩樻槸鏂规硶灞傘傦紙鏈変汉浼拌瑕侀棶鎴戜笉鏄敤鐨勮嚜瀹氫箟娉ㄨВ @RedisCache(type = Response.class) 涔堛備负浠涔堜細绗﹀悎 @Around 鐨勫尮閰嶈鍒欏憿锛岃繖涓瓑浼氬湪涓嬮潰璇达級...
绛旓細鎵撴柇涓嶅埄浜庢矡閫氾紝鍚屾椂锛岃繖鏍峰叾瀹炲鑷闈㈣瘯棰娌″惉娓呫傛瘮濡傞潰璇曢鏄屽浣曠悊瑙ava 鐨 JMM,...銆嶅悗闈㈣繕娌¤鐨勬椂鍊欙紝闈㈣瘯鑰呮墦鏂銆屼綘璇寸殑杩欎釜鎴戜細銆傘傘傦紝鍖呮嫭鏂规硶鍖猴紝鍫嗭紝鏍 balabala銆嶈繖灏辩瓟鐨勯兘璺戝亸浜嗐備簩銆佷粠鍏ㄥ眬銆佸埌鍏蜂綋 濡傛灉闂鏄 Spring 鏄粈涔堬紝鎬庢牱鐞嗚В鐨勩嶃傚緢澶氫汉灏变細鐩存帴鍥炵瓟銆孖oc 鍜...
绛旓細鍏跺畠鐨勬瘮濡俆oken浠ょ墝鍟,鎬庝箞闃叉琛ㄥ崟閲嶅鎻愪氦...浜夊彇鍚逛釜鍗婂皬鏃..濡傛灉闈㈣瘯瀹樿繕娌¤浣犲惉鐨勮瘽 Ok 缁х画hibernate hibernate鏄疧RM妗嗘灦,瀹冨jdbc杩涜浜嗗皝瑁,鍦ㄥ垎灞傜粨鏋勪腑澶勪簬鎸佷箙鍖栧眰,瀹冭兘寤虹珛闈㈠悜瀵硅薄鐨勫煙妯″瀷鍜屽叧绯绘暟鎹ā鍨嬩箣闂寸殑鏄犲皠.瀹冨ぇ澶х畝鍖栦簡dao灞傜殑缂栫爜宸ヤ綔 鐒跺悗灏璇磋session涓殑缂撳瓨鍜屽揩鐓ц〃 涔熷彲...
绛旓細濡傛灉浣犲Spring浜嬪姟绠$悊鎺ュ彛鎰熷叴瓒o紝濡俆ransactionProxyFactoryBean銆乀ransactionInterceptor鍜孴ransactionAttribute锛屾垨鑰呮兂娣卞叆浜嗚ВJava鍐呭瓨妯″瀷銆丷edis銆並afka鍜孧ySQL绛夋妧鏈紝鍙互鍙傝僑pring鍜孞ava闈㈣瘯棰绯诲垪鏂囩珷锛屾洿澶氳祫婧愬湪缃戠洏锛歔閾炬帴](pan.baidu.com/s/1pQTuKBYs鈥, 瀵嗙爜:3wom)銆傚湪杩欓噷锛屾繁鍏ュ涔犱笌瀹炶返骞惰锛...