130.【Spring注解_AOP】(四)

简介: 130.【Spring注解_AOP】

4.@EventListener 监听注解

(1).@EventListener 注解监听方法事件

@EventListener: 这个注解可以标注在方法上,然后包扫描到我们这个包就可以实现我们的注解监听。

1.UserService.java

package com.jsxs.service;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
/**
 * @Author Jsxs
 * @Date 2023/8/27 9:02
 * @PackageName:com.jsxs.service
 * @ClassName: UserService
 * @Description: TODO
 * @Version 1.0
 */
@Service
public class UserService {
    // 设置监听的注解,里面的类是被监听的类。这里我们监听 ApplicationEvent 这个类
    @EventListener(classes = {ApplicationEvent.class})
    public void Listener(ApplicationEvent applicationEvent){ //这里是拿到我们监听的事件,这个是固定的,
        System.out.println("UserService 监听事件为...."+applicationEvent);
    }
}

2.配置类什么的都和上面的一样

package com.jsxs.Test;
import com.jsxs.etx.EtxConfig;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
/**
 * @Author Jsxs
 * @Date 2023/8/24 10:48
 * @PackageName:com.jsxs.Test
 * @ClassName: IOC_ext
 * @Description: TODO
 * @Version 1.0
 */
public class IOC_ext {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(EtxConfig.class);
        // 1.自定义发布一个事件
        applicationContext.publishEvent(new ApplicationEvent(new String("我发布了一个事件")) {
        });
        applicationContext.close();
    }
}

(五)、Spring源码总结

1.Spring源码总结

1. Spring容器在启动的时候,先保存所有注册进来的Bean定义信息
   (1).xml注册bean <bean>
   (2).注解: @Service ....
2.Spring容器保存定义信息之后,将会根据保存的信息在合适的时机创建Bean的实列。
  (1).用到Bean的时候创建组件的实列,利用getBean的方法创建Bean。创建好的Bean实列将会保存在Spring容器中。
  (2).统一创建剩下所有Bean的时候。
3.后置处理器
  (1).每一个Bean创建完成,都会使用各种后置处理器进行处理,来增强我们的Bean功能,后置处理器在bean创建的各个环节中。比如 自动注入功能,Aop代理功能  
4.事件驱动模型
  (1).ApplicationListener 事件监听
  (2).ApplicationEventMulticaster 事件派发    

(六)、WEB 注解

注意事项: servlet3.0的版本要求要使用tomcat7.0+

1.简介与测试

(1).创建一个Maven的web项目

(2).创建页面支持

index.jsp

<html>
<body>
<a href="Hello">点击我跳转</a>
</body>
</html>
(3).编写后端
  1. 注解实现映射关系

使用@WebServlet注解之后,我们可以省略我们的web.xml的映射关系

HelloServlet .java

package com.jsxs.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * @Author Jsxs
 * @Date 2023/8/27 10:01
 * @PackageName:com.jsxs.servlet
 * @ClassName: HelloServlet
 * @Description: TODO
 * @Version 1.0
 */
@WebServlet("/Hello")  // 1.设置拦截的URL,请求过来就会调用这个类的方法 ⭐
public class HelloServlet extends HttpServlet {  // 2.继承Servlet 并重写两个方法 ⭐⭐
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("hello..."); ⭐⭐⭐
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}
  1. 使用web.xml 映射关系
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
  <display-name>Archetype Created Web Application</display-name>
<!--  具体处理器: 具体的业务逻辑类-->
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.jsxs.servlet.HelloServlet</servlet-class>
  </servlet>
<!--  处理器映射器: 主要根据处理器名字和路径找具体的处理器-->
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
</web-app>


相关文章
|
19天前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
37 0
|
2月前
|
Java Spring
在使用Spring的`@Value`注解注入属性值时,有一些特殊字符需要注意
【10月更文挑战第9天】在使用Spring的`@Value`注解注入属性值时,需注意一些特殊字符的正确处理方法,包括空格、引号、反斜杠、新行、制表符、逗号、大括号、$、百分号及其他特殊字符。通过适当包裹或转义,确保这些字符能被正确解析和注入。
|
20天前
|
XML Java 数据安全/隐私保护
Spring Aop该如何使用
本文介绍了AOP(面向切面编程)的基本概念和术语,并通过具体业务场景演示了如何在Spring框架中使用Spring AOP。文章详细解释了切面、连接点、通知、切点等关键术语,并提供了完整的示例代码,帮助读者轻松理解和应用Spring AOP。
Spring Aop该如何使用
|
26天前
|
XML JSON Java
SpringBoot必须掌握的常用注解!
SpringBoot必须掌握的常用注解!
47 4
SpringBoot必须掌握的常用注解!
|
4天前
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
20 2
|
2月前
|
存储 缓存 Java
Spring高手之路23——AOP触发机制与代理逻辑的执行
本篇文章深入解析了Spring AOP代理的触发机制和执行流程,从源码角度详细讲解了Bean如何被AOP代理,包括代理对象的创建、配置与执行逻辑,帮助读者全面掌握Spring AOP的核心技术。
41 3
Spring高手之路23——AOP触发机制与代理逻辑的执行
|
2月前
|
XML Java 数据格式
使用完全注解的方式进行AOP功能实现(@Aspect+@Configuration+@EnableAspectJAutoProxy+@ComponentScan)
本文介绍了如何使用Spring框架的注解方式实现AOP(面向切面编程)。当目标对象没有实现接口时,Spring会自动采用CGLIB库进行动态代理。文中详细解释了常用的AOP注解,如`@Aspect`、`@Pointcut`、`@Before`等,并提供了完整的示例代码,包括业务逻辑类`User`、配置类`SpringConfiguration`、切面类`LoggingAspect`以及测试类`TestAnnotationConfig`。通过这些示例,展示了如何在方法执行前后添加日志记录等切面逻辑。
159 2
使用完全注解的方式进行AOP功能实现(@Aspect+@Configuration+@EnableAspectJAutoProxy+@ComponentScan)
|
25天前
|
Java Spring
[Spring]aop的配置与使用
本文介绍了AOP(面向切面编程)的基本概念和核心思想。AOP是Spring框架的核心功能之一,通过动态代理在不修改原代码的情况下注入新功能。文章详细解释了连接点、切入点、通知、切面等关键概念,并列举了前置通知、后置通知、最终通知、异常通知和环绕通知五种通知类型。
30 1
|
28天前
|
存储 缓存 Java
Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项
Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项
96 2
|
28天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
38 1