Spring AOP横向开发实现

AOP

Spring框架的AOP机制可以让开发者把业务流程中的通用功能抽取出来,单独编写功能代码。在业务流程执行过程中,Spring框架会根据业务流程要求,自动把独立编写的功能代码切入到流程的合适位置。有三种实现方式

在实现AOP之前首先配置AOP约束
约束配置
‘’’

       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
       https://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/aop
       https://www.springframework.org/schema/aop/spring-aop.xsd">

‘’’
再配置需要响应的Bean

一:使用Spring API接口

实现接口MethodBeforeAdvice , AfterReturningAdvice等

  public class BeforeLog implements MethodBeforeAdvice {
       //前置日志
       public void before(Method method, Object[] objects, Object o) throws Throwable {
           //method被执行的目标的方法 objects参数 o:目标对象
           System.out.println(o.getClass().getName()+"的"+method.getName()+"方法被执行了");
       }
   }
   public class AfterLog implements AfterReturningAdvice {
       //o:返回值
       public void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable {
           System.out.println("执行了"+method.getName()+"方法,返回值为"+o);
       }
   }

配置AOP
‘’’

      <aop:config>
    <!--配置切入点.就是设置切入到什么地方-->
    <aop:pointcut id="point" expression="execution(* com.lss.pojo.UserServiceImpl.*(..))"/>
     <!--执行环绕,将设置的前置日志和后置日志切入到设置好的切入点中-->
    <aop:advisor advice-ref="before" pointcut-ref="point" />
    <aop:advisor advice-ref="after" pointcut-ref="point" />
</aop:config>  

‘’’

二:自定义切面

自定义类,当作前置日志和后置日志

public class DiyPoint {   
          public void before(){
              System.out.println("=====执行方法前=====");
          }
          public void after(){
              System.out.println("=====执行方法后=====");
          }
      }

aop配置,自定义切入点

<bean id="diypoint" class="com.lss.DIY2.DiyPoint" />
aop:config>
    <!--aspect:切面-->
    <aop:aspect ref="diypoint">
        <!-设置切入点-->
        <aop:pointcut id="diy" expression="execution(* com.lss.pojo.UserServiceImpl.*(..))"/>
        <aop:before method="before" pointcut-ref="diy" />
        <aop:after method="after" pointcut-ref="diy" />
    </aop:aspect>
</aop:config>

三:使用注解

自定义前置日志和后置日志等其他

@Aspect
   //注解该类为一个切面
   public class Auto {
   //execution(* com.lss.pojo.UserServiceImpl.*(..))切入点,即切入到什么地方
   @Before("execution(* com.lss.pojo.UserServiceImpl.*(..))")
   
   public void before(){
       System.out.println("执行前"); }
   @After("execution(* com.lss.pojo.UserServiceImpl.*(..))")
   public void after(){
       System.out.println("执行后"); }}'''
   再xml中开启注解支持,并注册Bean
   <bean id="auto" class="com.lss.Auto.Auto" />
   <aop:aspectj-autoproxy/>

统一测试方法

ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationConfig.xml");
       //动态代理代理的是接口
       UserService userService = (UserService) context.getBean("userService");
        //serService.add();测试方法是否输出前置和后置信息
        userService.delete();
展开阅读全文

150讲轻松搞定Python网络爬虫

05-16
【为什么学爬虫?】        1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到!        2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。   从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑
©️2020 CSDN 皮肤主题: 游动-白 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值