spring框架的核心概念:IoC和AOP到底有啥用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring框架的核心概念:IoC和AOP到底有啥用?相关的知识,希望对你有一定的参考价值。
我以前编写网页的时候,是用的asp,后来接触到了jsp,也就同时接触到了ejb,struts,hibernate等等,最近我又接触到了spring! spring中的IoC和AOP到底在实际编写程序时候有什么用啊?
能举个实际的例子吗?<<spring in action>>里面的例子太简单了,我觉得不足以说明问题!!
class A
int a;
int b;
int add()
return a+b;
public void seta(int a)this.a=a;
public void setb(int b)this.b=b;
a和b的值就可以在指定的xml文件里修改.
AOP就是比如你要执行一个登录的方法login(),调用的这个方法的时候,就可以使用AOP进行切入来进行登录前的验证或者登录后的日志工作等。这个例子太麻烦了,自己看看书吧
http://wiki.redsaga.com/confluence/display/Spring2/Spring2.5
Spring2.5的中文手册,看这个算了 参考技术A IoC的详细介绍:我的java博客http://www.blogjava.net/cmzy/archive/2008/07/15/214971.html
参考资料:http://www.blogjava.net/cmzy/archive/2008/07/15/214971.html
参考技术B java2000说的不错,那两个概念太多了,说不完,Spring中的ioc和aop有啥作用?为啥要用ioc和aop?面试中多次被问到,求一个详细 清晰的解答...
还是需要去了解,多看看书!IOC:控制反转,是一种设计模式。一层含义是控制权的转移:由传统的在程序中控制依赖转移到由容器来控制;第二层是依赖注入:将相互依赖的对象分离,在spring配置文件中描述他们的依赖关系。他们的依赖关系只在使用的时候才建立。简单来说就是不需要NEW一个对象了。
AOP:面向切面,是一种编程思想,OOP的延续。将系统中非核心的业务提取出来,进行单独处理。比如事务、日志和安全等。这个简单来说就是可以在一段程序之前或者之后做一些事。
Spring 的AOP和IOC都是为了解决系统代码耦合度过高的问题。使代码重用度高、易于维护。
不过AOP和IOC并不是spring中特有的,只是spring把他们应用的更灵活方便 参考技术A 我来说说我的理解:
面试的时候,尽量不要照本宣科,这样给面试官的印象是很差的。用自己的话理解是最好的。我先来将两个例子:
ioc,控制反转,这个指的就是我们获取对象的方式进行反转了,改变了。在使用spring之前是需要手动new出来的,是我们主动获取的。使用spring之后,是将这个获取的过程交给spring来管理,我们只需要告诉spring你需要什么就行了,它就会把东西给你。比如:在没有电商的时候,我们去上街买东西,需要考虑到这东西有没有,价钱多少,怎么搬回来,去有多远……等等无数个和主要的业务逻辑(买东西)无关的问题。这样就会扰乱主业务逻辑。当我们有了电商平台后,买东西时只需要两步。注册账号(装载bean),告诉电商你要的东西名字(通过名字获取Bean),然后就可以在门口收到东西了。这就是ioc。
aop,面向切面。在谈这个之前需要了解几个词:切面,切入点,织入,目标对象,通知。
我先解释下名字的意思,再讲故事。
切面:就是你要准备增强的那些方法。
切入点:就是具体织入的方法,定义了地点
织入:动词,就是将切面织入的过层
目标对象:被增强的类
通知:就是什么时候增强,定义了时间
好了,了解清楚上面的几个词的意思后,再听故事就容易多了。
aop的功能就是用来增强,在执行主业务的通知也顺带执行其他业务。如:老李上街办点事儿,走啊走,走到了老王家门前(切入点),老王看见老李问:去哪啊!
老李:上街办点事儿(目标类)
老王:那帮我顺便把这封信投到邮筒里吧。(切面),等到10点的时候邮局开门了去柜台投。(通知)
老李:好嘞。然后老李接过信。(织入)
老李继续走啊走,继续上街办事(增强后的目标类)。办完事后老李回家了。
以上就是aop。aop一般用来处理权限控制,日志记录,加载事务等非主要业务逻辑的事情。底层是采用cglib和jdk的动态代理实现的。
以上例子可能会有点不恰当,如有大神,望指点修正,谢谢! 参考技术B ioc为Inversion of Control意思是控制反转,AOP是面向切面。spring就是他们结合的容器框架。
在spring的bean结构中如<bean id="PersonDaoBean" class="..PersonDao"/>,在一个Service类中可以这样写 private PersonDao personDao = new PersonDaoBean();你看这样PersonDao对象就不用自己创建和维护了,交给了bean。也就是控制反转。
AOP设置拦截用户的业务方法,判断权限,有权限则可以执行调用的业务方法,没有权限则不可以。在拦截的时候出现环绕通知 ,前置通知,后置通知,例外通知,最终通知。
这是我的答案,望采纳,要是喜欢,请支持,很难打字的。
以上是关于spring框架的核心概念:IoC和AOP到底有啥用?的主要内容,如果未能解决你的问题,请参考以下文章
Spring中的ioc和aop有啥作用?为啥要用ioc和aop?面试中多次被问到,求一个详细 清晰的解答...