用了spring也很久了,对IOC和AOP的理解还是很模糊 :
1.IOC 控制反转也叫依赖注入,我的理解是在spring配置文件中配置相应的bean,同时也可以设置相关的属性,
让spring容器来生成类的实例对象,并进行管理。但是对象不应该都由Java虚拟机进行的管理的吗?2.AOP很陌生,就是在配置spring事务管理,使用自动代理的时候有印象,如:
<!-- 配置BeanName自动代理 -->
<bean
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<value>*Service</value>
</property>
<property name="interceptorNames">
<value>transactionInterceptor</value>
</property>
</bean>在网上也看很多资料,对IOC和AOP的理解还是很模糊,特别是AOP在实际中的应用,感觉没接触过。
请教大家有关IOC和AOP概念的理解,最好能举例子说明IOC和AOP的实际应用。
1.IOC 控制反转也叫依赖注入,我的理解是在spring配置文件中配置相应的bean,同时也可以设置相关的属性,
让spring容器来生成类的实例对象,并进行管理。但是对象不应该都由Java虚拟机进行的管理的吗?2.AOP很陌生,就是在配置spring事务管理,使用自动代理的时候有印象,如:
<!-- 配置BeanName自动代理 -->
<bean
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<value>*Service</value>
</property>
<property name="interceptorNames">
<value>transactionInterceptor</value>
</property>
</bean>在网上也看很多资料,对IOC和AOP的理解还是很模糊,特别是AOP在实际中的应用,感觉没接触过。
请教大家有关IOC和AOP概念的理解,最好能举例子说明IOC和AOP的实际应用。
解决方案 »
- 有C/C++基础学习JAVA
- struts2 + json
- 银川方达软件如何?
- 如何用ejb生成表对象?
- 关于ant的问题
- The server encountered an internal error () that prevented it from fulfilling this request.
- 求webservice书籍或教程
- XML文件导出问题
- 如何解决org.hibernate.HibernateException: No TransactionManagerLookup specified
- 跪求:Resin下怎么配置Hibernate2.1.2??
- struts2执行跳转如何像servlet一样,直接forward或者redirect?
- shh(struts2)中我想用spring的AOP实现对每个action的每个方法的拦截,请问怎么实现?
AOP是面向方面编程,简单点解释,比方说你想在你的biz层所有类中都加上一个打印‘你好’的功能这你经可以用aop思想来做,你先写个类写个方法,方法经实现打印‘你好’让后你Ioc这个类 ref=“biz.*”让每个类都注入。这就是面向方面编程。
个人理解,只可参照。希望理解比我好的人也说说看法
在Spring启动的时候,Spring会把你在配置文件里面配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean 的类(假设这个类名是A),分配的方法就是调用A的set方法来注入进去,而不需要你在A里面new这些bean了。
IOC就是注入属性值。偏离的不远暂时可以这么理解,接触久了你会懂的
和meta-program有关系,meta-program就是用代码生成代码。
当应用分层了以后,大牛们还是能发现某些功能是贯穿于每层的(比如捕获异常、日志输出等),就像一个个切片(Pointcut)一样。我们说一个方法一次只做一件事并把他做好,但是往往我们的方法中会有捕获异常、日志输出这样的逻辑与业务逻辑混杂。所以高人们就用meta-programming来将这些逻辑放在应该放的地方。
把类当做一条直线,java开发讲究的是低耦合,低耦合到极限的时候就是线与线都是平行的,无任何交叉,交叉就代表着依赖。有一个共通的操作要在所有平行线上执行,这样就产生了交叉。AOP的功能就是将这条交叉的线独立出来,人为的放置平行,但功能还是原来的功能!
AOP 面向切面编程 就像写一个方法然后反复的利用它把他们的共同的东西提取出来然后用的时候直接嵌入在某个类中