当前位置: 首页 > news >正文

做策划网站推广怎么写简历网页制作与网站建设作业

做策划网站推广怎么写简历,网页制作与网站建设作业,无极网最新招聘信息,制作微信网页1、spring-监听事件基本原理 Spring的事件监听机制和发布订阅机制是很相似的:发布了一个事件后,监听该类型事件的所有监听器会触发相应的处理逻辑 2、Spring 监听事件相关规范 在Spring中,事件监听机制主要涉及到了一下几个关键的规范&#x…

1、spring-监听事件基本原理

  • Spring的事件监听机制和发布订阅机制是很相似的:发布了一个事件后,监听该类型事件的所有监听器会触发相应的处理逻辑

2、Spring 监听事件相关规范

在Spring中,事件监听机制主要涉及到了一下几个关键的规范(抽象类及接口):ApplicationEventApplicationListener ApplicationEventPublisher

  • ApplicationEvent: Spring的事件是符合jdk的规范的,这个抽象类继承了jdk内置的事件规范类EventObject(即jdk建议所有的事件都继承EventObject这个类)。ApplicationEvent是Spring家的事件规范。所以我们在自定义事件的时候,可以继承与ApplicationEvent,比如,Spring家自己关于容器上下文事件就又定义了一个容器上下文的时间规范ApplicationContextEvent,它同样是继承于ApplicationEvent的,只不过扩充了获取发出事件容器的方法;今后,我们同样可以在继承于ApplicationEvent的基础上定义自己的事件规范。

  • ApplicationListener:这是一个函数式接口,同样时事件监听器的规范,当监听到自己监听的事件类型时就会调用onApplicationEvent方法来执行监听逻辑

  • ApplicationEventPublisher:这同样是一个函数式接口,定义了事件发布的规范,任何的事件发布器ApplicationEventPublisher都是通过调用publishEvent来进行事件的发布

3、代码实现-自定事件

public class MyEvent extends ApplicationEvent {private user user;//注册方法也行。list<> 集合,对象public MyEvent(Object source, user user) {super(source);this.user = user;}public user getMessage() {return user;}
}

定义一个user实体类

@Data
public class user {
private String name;
private String age;}

4、监听事件

  • springboot进行事件监听有四种方式,选择任意一种即可
  • 将监听器装载入spring容器(常用)
  • 通过@EventListener注解实现事件监听(常用)
  • 手工向ApplicationContext中添加监听器
  • 在application.properties中配置监听器
  • 4.1、 监听–ApplicationListener
@Component
@Slf4j
public class MyListener1 implements ApplicationListener<MyEvent> {@Overridepublic void onApplicationEvent(MyEvent event) {//写自己的方法log.info("{}监听器1:监听到事件{}",MyListener1.class.getName(),event.getMessage());System.out.println("---------------------->监听器1:监听到事件");}
}
  • 4.2、 监听–注释
@Component
@Slf4j
public class MyListener2 {@EventListener(value = MyEvent.class)@Asyncpublic void listener(MyEvent event) {//写自己的方法log.info("{}监听器1:监听到事件{}", MyListener2.class.getName(),event.getMessage());System.out.println("---------------------->监听器1:监听到事件");}
}
  • 4.3、监听–配置文件
通过配置文application.properties中配置监听器: context.listener.classes=com.listener.MyListener1
  • 4.4、监听–手动添加监听
@SpringBootApplication
public class SpringListenerApplication {public static void main(String[] args) {ConfigurableApplicationContext run = SpringApplication.run(SpringListenerApplication.class, args);// 添加监听器run.addApplicationListener(new MyListener1());}}

5、发布事件

//使用 applicationContext  和ApplicationEventPublisher  都可以发布事件,人选则其一即可。
@RestController
@RequestMapping("/my")
public class MyController {@Autowiredprivate ApplicationContext applicationContext;//@Autowired//  private ApplicationEventPublisher applicationEventPublisher;@RequestMapping("/test")public void test() {user user = new user();user.setName("GJ");user.setAge("12");System.out.println(applicationContext.getApplicationName());applicationContext.publishEvent(new MyEvent(this,user));//    applicationEventPublisher.publishEvent(new MyEvent(this,user));}}
//直接访问即可

6、工作中使用 ----发布者模式

@Component
public class ApplicationContextUtil implements ApplicationContextAware{private static ApplicationContext applicationContext;private ApplicationContextUtil() {}public static <T> T getBean(Class<T> clazz) throws BeansException{return applicationContext.getBean(clazz);}public static void publishEvent(Object event){;applicationContext.publishEvent(event);}public static ApplicationContext getApplicationContext(){return applicationContext;}@Overridepublic void setApplicationContext(ApplicationContext context) throws BeansException {applicationContext = context;}}
  • 6.1、添加 NoticeDto 类对MyEvent进行继承
@Data
public class NoticeDto extends MyEvent{private String noticeType;public NoticeDto(Object source) {super(source);}
}
@Data
public class MyEvent extends ApplicationEvent {private String message;//ApplicationEvent 需要有参的构造,所以必须调用superpublic MyEvent(Object source) {super(source);}
}
  • 6.2、监听器
@Component
@Slf4j
public class MyListener3 {@EventListener@Async//当然这个地方也可以使用NoticeDto  作为参数。public void listener(MyEvent event) {
//        假设 MyEvent 是 NoticeDto 的父类或接口,并且某个 MyEvent 类型的对象 event 实际上是 NoticeDto 的一个实例。
//        当这个对象被传递给 listener 方法时,它仍然保持着其作为 NoticeDto 实例的所有属性和值。
//        在方法内部,通过 (NoticeDto) event 进行向下转型,将这个对象视为 NoticeDto 类型,从而可以访问 NoticeDto 特有的属性和方法。
//        由于对象的内部状态在转换过程中没有改变,所以 NoticeDto 的属性会保留其原有的值。 总的来说,转换类型并没有改变对象的实际内容,只是改变了我们与对象交互的方式。
//        因此,NoticeDto 中的属性在转换后仍然保持其原有的值。NoticeDto event1 = (NoticeDto) event;//写自己的方法log.info("{}监听器:监听到事件{}", MyListener3.class.getName(),event.getMessage());System.out.println("---------------------->监听器:监听到事件");System.out.println(event.getMessage()+"\n"+event.getSource().getClass().getName());System.out.println(event1.getNoticeType());System.out.println(event1.getMessage());}
}
  • 6.3、访问测试:
    @RequestMapping("/test2")public void test2() {//不管怎么写,都会被监听,但必须传送一个 object source,传送什么无所谓。NoticeDto noticeDto = new NoticeDto(this);noticeDto.setNoticeType("123");noticeDto.setMessage("abc");ApplicationContextUtil.publishEvent(noticeDto);}
}
//结果为:
2024-07-09 23:43:57.180  INFO 8100 --- [nio-8888-exec-1] com.example.listener.MyListener3         : com.example.listener.MyListener3监听器:监听到事件abc
---------------------->监听器:监听到事件
abc
com.example.listener.MyController
123
abc
http://www.yayakq.cn/news/523327/

相关文章:

  • 上海网站快速备案扁平化网站设计教程
  • 龙岩做网站开发哪家公司好邵阳网站建设的话术
  • 佛山市南海区建设局网站企业制作网站
  • 网站建设视频vs常用的网络推广平台有哪些呢
  • 广州微信网站建设h5网站显示的图标怎么做的
  • 汉阳网站推广龙岗网站建设找深一
  • 网上商城公司网站建设方案织梦技术个人网站模板
  • 网站定制开发流程和功能网站开发报价表
  • 优化大师官方网站网页字体网站
  • 网站开发工具.晴天娃娃宁波鄞州区商用高端网站设计
  • 网站虚拟空间输入公司名字找不到公司网站
  • 求个网站填空题手机网站与app
  • 西安商城网站制作网站视频上传怎么做
  • 网站排名推广推荐wordpress自定义搜索
  • php网站好做seo网页链接怎么放到桌面上
  • 电子商务以后能干什么南通seo网站价格
  • 营销型网站的整体规划嵌入式软件开发笔试题目
  • 成品网站源码网易企业邮箱入口 官网
  • 网络 企业网站阿里巴巴国际站工作怎么样
  • 老虎淘客系统可以做网站吗中国免费域名申请网站
  • 新市区做网站上海百度推广平台
  • 做软件需要网站建设部门户网站
  • 网站设计的资质叫什么wordpress 头部 空行
  • 国企网站建设需要注意什么智能建造技术就业前景
  • 网站飘窗怎么做wordpress 360急速模式打不开
  • 电子东莞网站建设百度竞价广告推广
  • 那个网站专门做二手衣服的定制网站开发app费用
  • 和恶魔做交易的网站北京网站优化外包
  • 褚橙的网站建设做网站之前的前期
  • 中国建设银行安徽省分行招聘网站wordpress空间转移