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

如何做网站软件做网站 每月赚 钱

如何做网站软件,做网站 每月赚 钱,福州网站建设信息,旅游网站建设成都1、spring-监听事件基本原理 Spring的事件监听机制和发布订阅机制是很相似的#xff1a;发布了一个事件后#xff0c;监听该类型事件的所有监听器会触发相应的处理逻辑 2、Spring 监听事件相关规范 在Spring中#xff0c;事件监听机制主要涉及到了一下几个关键的规范#x… 1、spring-监听事件基本原理 Spring的事件监听机制和发布订阅机制是很相似的发布了一个事件后监听该类型事件的所有监听器会触发相应的处理逻辑 2、Spring 监听事件相关规范 在Spring中事件监听机制主要涉及到了一下几个关键的规范抽象类及接口ApplicationEvent、ApplicationListener 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 ApplicationListenerMyEvent {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.classescom.listener.MyListener14.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(ClassT 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 {EventListenerAsync//当然这个地方也可以使用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()\nevent.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.w-s-a.com/news/599985/

相关文章:

  • 网络网站推广优化建筑工程教育网官方网站
  • 旅行社网站策划做网站编辑好还是美工好
  • 珠海做网站找哪家好在线磁力搜索神器
  • 做网站优化有必要wordpress导航栏字体
  • 中山网站建设半江红沈阳免费网站建站模板
  • 工信部网站备案管理系统网站备案负责人 更换
  • 我要做个网站该怎么做怎么做电商平台网站
  • wordpress教程 网站标题莱芜大众网
  • 网站建设业务终止合作范本主机公园wordpress
  • 口碑好企业网站建设网站建设与什么专业有关
  • 助贷获客系统快速优化排名公司推荐
  • 重庆做网站优化推广的公司企业网站如何进行定位
  • 高密市赏旋网站设计有限公司山东广饶县建设局网站
  • 成都哪里有网站开发公司网业分离是什么
  • 购物导购网站开发女孩学建筑学好找工作吗
  • 做网站沈阳掌握夏邑进入公众号
  • 怎么做自动提卡网站谷歌推广怎么做
  • 大同网站建设熊掌号wordpress 首页单页
  • 青岛网站美工成都优秀网站建设
  • 聊城大型门户网站建设多版本wordpress
  • 建网站的公司 快云wordpress的搜索
  • 贷款网站模版东莞网站建设哪家专业
  • 做做网站已更新878网站正在建设中
  • dz旅游网站模板网站上做百度广告赚钱么
  • 青岛外贸假发网站建设seo优化名词解释
  • 四川建设厅网站施工员证查询网站建设行业政策
  • 网站全站出售dw怎么设计网页
  • 合肥网站建设方案服务网站建设推荐郑国华
  • 襄阳网站建设需要多少钱台州网站设计公司网站
  • 东莞专业拍摄做网站照片如何在百度上发布自己的广告