Spring AOP

Posted 1999wang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring AOP相关的知识,希望对你有一定的参考价值。

                Spring AOP面向切面编程

Spring依赖注入:

    通过构造器注入

      1.根据索引

      2.根据name

      3.根据类型

技术图片

 

 List    Set   数组  对象   资源文件

<bean id="OtherBean" class="cn.itsource._01mybean.OtherBean"></bean>
<bean id="ListMyBean" class="cn.itsource._01mybean.ListMyBean">
<!--<property name="arrays" value="1,2,3"></property>-->
<property name="arrays">
<array>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
</array>

<!--注入list集合-->
</property>
<property name="list">
<list>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
</list>

</property>
<!--注入otherBeanList对象类型的集合-->
<property name="otherBeanList">
<list>
<bean class="cn.itsource._01mybean.OtherBean"></bean>
<bean class="cn.itsource._01mybean.OtherBean"></bean>
<bean class="cn.itsource._01mybean.OtherBean"></bean>
</list>
</property>
<!--注入Set集合-->
<property name="set">
<set>
<value>睡神皮政1</value>
<value>睡神皮政2</value>
<value>睡神皮政3</value>
<value>睡神皮政4</value>
<value>睡神皮政</value>
<value>睡神皮政</value>
</set>

</property>
<!--注入otherBeanset对象类型的集合-->
<property name="otherBeanSet">
<set>
<bean class="cn.itsource._01mybean.OtherBean"></bean>
<bean class="cn.itsource._01mybean.OtherBean"></bean>
<ref bean="OtherBean"></ref>
<ref bean="OtherBean"></ref>
<ref bean="OtherBean"></ref>
</set>
</property>
<!--注入map-->
<property name="mp">
<map>
<entry key="1" value="睡神皮大哥"></entry>
<entry key="2" value="睡神皮大哥"></entry>
<entry key="3" value="睡神皮大哥"></entry>
<entry key="4" value="睡神皮大哥"></entry>
<entry key="5" value="睡神皮大哥"></entry>

</map>
</property>
<!--注入property资源文件 支持中文-->
<property name="prop1">
<props>
<prop key="root1">皮大哥睡觉叫不醒</prop>
<prop key="root2">皮大哥睡觉叫不醒</prop>
<prop key="root3">皮大哥睡觉叫不醒</prop>
<prop key="root4">皮大哥睡觉叫不醒</prop>

</props>
</property>
<!--注入property资源文件 不支持中文-->
<property name="prop2">
<value>
root=123456
passwork=123456
</value>
</property>
</bean>

<bean id="OtherBean" class="cn.itsource._01mybean.OtherBean"></bean>
<bean id="ListMyBean" class="cn.itsource._01mybean.ListMyBean">
<!--<property name="arrays" value="1,2,3"></property>-->
<property name="arrays">
<array>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
</array>

<!--注入list集合-->
</property>
<property name="list">
<list>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
<value>钟尚华</value>
</list>

</property>
<!--注入otherBeanList对象类型的集合-->
<property name="otherBeanList">
<list>
<bean class="cn.itsource._01mybean.OtherBean"></bean>
<bean class="cn.itsource._01mybean.OtherBean"></bean>
<bean class="cn.itsource._01mybean.OtherBean"></bean>
</list>
</property>
<!--注入Set集合-->
<property name="set">
<set>
<value>睡神皮政1</value>
<value>睡神皮政2</value>
<value>睡神皮政3</value>
<value>睡神皮政4</value>
<value>睡神皮政</value>
<value>睡神皮政</value>
</set>

</property>
<!--注入otherBeanset对象类型的集合-->
<property name="otherBeanSet">
<set>
<bean class="cn.itsource._01mybean.OtherBean"></bean>
<bean class="cn.itsource._01mybean.OtherBean"></bean>
<ref bean="OtherBean"></ref>
<ref bean="OtherBean"></ref>
<ref bean="OtherBean"></ref>
</set>
</property>
<!--注入map-->
<property name="mp">
<map>
<entry key="1" value="睡神皮大哥"></entry>
<entry key="2" value="睡神皮大哥"></entry>
<entry key="3" value="睡神皮大哥"></entry>
<entry key="4" value="睡神皮大哥"></entry>
<entry key="5" value="睡神皮大哥"></entry>

</map>
</property>
<!--注入property资源文件 支持中文-->
<property name="prop1">
<props>
<prop key="root1">皮大哥睡觉叫不醒</prop>
<prop key="root2">皮大哥睡觉叫不醒</prop>
<prop key="root3">皮大哥睡觉叫不醒</prop>
<prop key="root4">皮大哥睡觉叫不醒</prop>

</props>
</property>
<!--注入property资源文件 不支持中文-->
<property name="prop2">
<value>
root=123456
passwork=123456
</value>
</property>
</bean>


XML自动注入
技术图片

 

 

开启全注解

 

<!-- 开启扫描 controller service repository component-->
<context:component-scan base-package="cn.itsource._03allnote"/>
技术图片

 



AOP

    面向切面编程,通过预编译方 式和运行期动态代理实现程序功能的统一维护的一种技术,AOP是OOP的延续,是软件开发中的一个 热点,也是Spring框架中的一个重要内容利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

 

 

 AOP使用场景:

    事务管理

    日志管理

    性能监控

    拦截器

 

 代理模式

  JDK:针对有接口情况下使用的代理模式 --优先推从--耦合度低(常用)
  CGLIB:没有接口的情况下使用的代理模式 -- 不要定义成final 修饰类
  静态代理:如果对多个接口或者多个方法,写很多额外的代理实现
?     动态代理:在程序运行过程中产生的这个对象

  动态代理 jdk(有接口) cglib(没有接口代理)


环绕事务配置:

技术图片

用法:可以根据或得的方法名加判断

技术图片

 

 






  

    

 

以上是关于Spring AOP的主要内容,如果未能解决你的问题,请参考以下文章

源码学习之AOPSpring AOP使用

AOPSpring大法有多好约定编程

关于Spring——AOP

关于Spring——AOP

AOPspring 的AOP编程报错:[Xlint:invalidAbsoluteTypeName]error

框架 - Spring 源码一步步深入