java Spring AOP详解及简单实例

 更新时间:2017年05月08日 11:23:26   投稿:lqh  
这篇文章主要介绍了java Spring AOP详解及简单实例的相关资料,需要的朋友可以参考下

一、什么是AOP

  AOP(Aspect Oriented Programming)面向切面编程不同于OOP(Object Oriented Programming)面向对象编程,AOP是将程序的运行看成一个流程切面,其中可以在切面中的点嵌入程序。

  举个例子,有一个People类,也有一个Servant仆人类,在People吃饭之前,Servant会准备饭,在People吃完饭之后,Servant会进行打扫,这就是典型的面向切面编程.

  其流程图为:

 

二、Spring AOP实现:

1、People类:

public class People {

 public void eat() {
 System.out.println(“happyheng开始吃饭啦");
 }

 public void play(){
 
 }
}

Servant类:

@Aspect
public class Servant {

 /**
 * 在吃饭之前
 */
 @Before("execution(** com.happyheng.entity.People.eat(..))")
 public void prepareFood(){
 System.out.println("准备食物");
 }

 /**
 * 在吃饭之后
 */
 @After("execution(** com.happyheng.entity.People.eat(..))")
 public void clean(){
 System.out.println("打扫");
 }

}

其中的 @Before是指执行前,@After是指执行方法后获取方法抛出异常后,@AfterReturning是指在执行方法后调用,@AfterThrowing是指方法抛出异常后调用。

2、在applicationContext.xml中进行配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd"
xmlns:context="http://www.springframework.org/schema/context">
<context:component-scan base-package="com.happyheng" />
<aop:aspectj-autoproxy />
<!--注意Aspect的bean必须在Spring中注册,否则不会生效,Spring会用这个bean进行拦截-->
<bean class="com.happyheng.aop.Servant"></bean>
<bean id="happyheng" class="com.happyheng.entity.People"></bean>
</beans>

3、在main中使用:

 public static void main(String[] args) {
 ApplicationContext ctx = new ClassPathXmlApplicationContext(APPLICATION_XML);
 
 People happyheng = (People)ctx.getBean("happyheng");
 happyheng.eat();
 }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Java中使用辗转相除法求最大公约数

    Java中使用辗转相除法求最大公约数

    这篇文章主要介绍了Java中使用辗转相除法求最大公约数,本文直接给出代码实例,需要的朋友可以参考下
    2015-05-05
  • Java 实现简单静态资源Web服务器的示例

    Java 实现简单静态资源Web服务器的示例

    这篇文章主要介绍了Java 实现简单静态资源Web服务器的示例,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-11-11
  • SpringBoot整合MyBatisPlus详解

    SpringBoot整合MyBatisPlus详解

    这篇文章详细介绍了SpringBoot整合mybatisplus的全过程,文中有详细的代码示例,具有一定的参考价值,需要的朋友可以参考一下
    2023-04-04
  • Java实现商城订单超时取消功能

    Java实现商城订单超时取消功能

    大多数的B2C商城项目都会有限时活动,当用户下单后都会有支付超时时间,当订单超时后订单的状态就会自动变成已取消 ,这个功能的实现有很多种方法,本文的实现方法适合大多数比较小的商城使用。具体实现方式可以跟随小编一起看看吧
    2019-12-12
  • SpringBoot快速搭建实现三步骤解析

    SpringBoot快速搭建实现三步骤解析

    这篇文章主要介绍了SpringBoot快速搭建实现三步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • idea2020.2卡死在reading maven projects

    idea2020.2卡死在reading maven projects

    这篇文章主要介绍了idea2020.2卡死在reading maven projects,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java直接输出对象变成@.....的问题及解决

    Java直接输出对象变成@.....的问题及解决

    这篇文章主要介绍了Java直接输出对象变成@.....的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • MyBatis通用Mapper和PageHelper的过程详解

    MyBatis通用Mapper和PageHelper的过程详解

    这篇文章主要介绍了MyBatis通用Mapper和PageHelper的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • mybatis-plus分页查询三种方法小结

    mybatis-plus分页查询三种方法小结

    本文主要介绍了mybatis-plus分页查询三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • IntelliJ IDEA 最常用的配置图文详解

    IntelliJ IDEA 最常用的配置图文详解

    这篇文章给大家分享了IntelliJ IDEA 详细图解最常用的配置的相关知识点内容,有需要的朋友们可以参考学习下。
    2018-07-07

最新评论