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

企业建设营销网站的基本步骤有哪些营销型网站建设优化建站

企业建设营销网站的基本步骤有哪些,营销型网站建设优化建站,搭建微网站的基本流程,怎样做好网络推广工作ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,设计初衷也是为了系统业务逻辑之间的解耦,提高可扩展性以及可维护性。事件发布者并不需要考虑谁去监听,监听具体的实现…

ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,设计初衷也是为了系统业务逻辑之间的解耦,提高可扩展性以及可维护性。事件发布者并不需要考虑谁去监听,监听具体的实现内容是什么,发布者的工作只是为了发布事件而已。

创建Event事件

public class MessageEvent extends ApplicationEvent {/*** 消息体*/private MessageDTO messageDTO;/*** Create a new ApplicationEvent.** @param source the object on which the event initially occurred (never {@code null})*/public MessageEvent(MessageDTO source) {super(source);this.messageDTO = source;}public MessageDTO getMessageDTO() {return messageDTO;}
}

我们自定义事件MessageEvent继承了ApplicationEvent,继承后必须重载构造函数,构造函数的参数可以任意指定,其中source参数指的是发生事件的对象,该对象可以在监听内被获取。

在Spring内部中有多种方式实现监听如:@EventListener注解、实现ApplicationListener泛型接口、实现SmartApplicationListener接口等,我们下面来讲解下这三种方式分别如何实现。

创建MessageDTO

public class MessageDTO {/*** 消息类型*/private MsgTypeEnum msgType;/*** 消息发出时的时间戳*/private Long syncTime;
}

事件发布

@Service
public class UserService
{@AutowiredApplicationContext applicationContext;public void register(){//../省略其他逻辑//发布事件applicationContext.publishEvent(new MessageEvent(new MessageDTO()));}
}

事件发布是由ApplicationContext对象管控的,我们发布事件前需要注入ApplicationContext对象调用publishEvent方法完成事件发布。

实现监听

@EventListener

@Service
public class MessageEventService {@EventListenerpublic void notify(MessageEvent messageEvent) {log.info("异步发送消息体:{}", JSON.toJSONString(messageEvent));}
}

ApplicationListener

@Component
public class RegisterListener implements ApplicationListener<MessageEvent>
{/*** 实现监听*/@Overridepublic void onApplicationEvent(MessageEvent messageEvent) {}
}

SmartApplicationListener实现有序监听

@Component
public class UserRegisterListener implements SmartApplicationListener
{/***  该方法返回true&supportsSourceType同样返回true时,才会调用该监听内的onApplicationEvent方法* @param aClass 接收到的监听事件类型* @return*/@Overridepublic boolean supportsEventType(Class<? extends ApplicationEvent> aClass) {//只有MessageEvent监听类型才会执行下面逻辑return aClass == MessageEvent.class;}/***  该方法返回true&supportsEventType同样返回true时,才会调用该监听内的onApplicationEvent方法* @param aClass* @return*/@Overridepublic boolean supportsSourceType(Class<?> aClass) {//只有在UserService内发布的MessageEvent事件时才会执行下面逻辑return aClass == UserService.class;}/***  supportsEventType & supportsSourceType 两个方法返回true时调用该方法执行业务逻辑* @param applicationEvent 具体监听实例,这里是UserRegisterEvent*/@Overridepublic void onApplicationEvent(ApplicationEvent applicationEvent) {//转换事件类型MessageEvent messageEvent = (MessageEvent) applicationEvent;}/*** 同步情况下监听执行的顺序* @return*/@Overridepublic int getOrder() {return 0;}
}

SmartApplicationListener接口继承了全局监听ApplicationListener,并且泛型对象使用的ApplicationEvent来作为全局监听,可以理解为使用SmartApplicationListener作为监听父接口的实现,监听所有事件发布。

既然是监听所有的事件发布,那么SmartApplicationListener接口添加了两个方法supportsEventType、supportsSourceType来作为区分是否是我们监听的事件,只有这两个方法同时返回true时才会执行onApplicationEvent方法。

可以看到除了上面的方法,还提供了一个getOrder方法,这个方法就可以解决执行监听的顺序问题,return的数值越小证明优先级越高,执行顺序越靠前。

如果说我们不希望在执行监听时等待监听业务逻辑耗时,发布监听后立即要对接口或者界面做出反映,我们该怎么做呢?

 使用@Async实现异步监听

@Aysnc其实是Spring内的一个组件,可以完成对类内单个或者多个方法实现异步调用,这样可以大大的节省等待耗时。内部实现机制是线程池任务ThreadPoolTaskExecutor,通过线程池来对配置@Async的方法或者类做出执行动作。

线程任务池配置

我们创建一个ListenerAsyncConfiguration,并且使用@EnableAsync注解开启支持异步处理,具体代码如下所示:

@Configuration
@EnableAsync
public class ListenerAsyncConfiguration implements AsyncConfigurer
{/*** 获取异步线程池执行对象* @return*/@Overridepublic Executor getAsyncExecutor() {//使用Spring内置线程池任务对象ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();//设置线程池参数taskExecutor.setCorePoolSize(5);taskExecutor.setMaxPoolSize(10);taskExecutor.setQueueCapacity(25);taskExecutor.initialize();return taskExecutor;}@Overridepublic AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {return null;}
}

我们自定义的监听异步配置类实现了AsyncConfigurer接口并且实现内getAsyncExecutor方法以提供线程任务池对象的获取。
我们只需要在异步方法上添加@Async注解就可以实现方法的异步调用

@Service
public class MessageEventService {@EventListener@Asyncpublic void notify(MessageEvent messageEvent) {log.info("异步发送消息体:{}", JSON.toJSONString(messageEvent));}
}


文章转载自:
http://download.spkw.cn
http://wampee.spkw.cn
http://wigged.spkw.cn
http://kazan.spkw.cn
http://premie.spkw.cn
http://stillroom.spkw.cn
http://atroceruleous.spkw.cn
http://gmat.spkw.cn
http://whosever.spkw.cn
http://ginner.spkw.cn
http://slaky.spkw.cn
http://discussional.spkw.cn
http://cymar.spkw.cn
http://suavity.spkw.cn
http://trenchant.spkw.cn
http://oxidize.spkw.cn
http://unbribable.spkw.cn
http://hygienist.spkw.cn
http://agree.spkw.cn
http://durbar.spkw.cn
http://siva.spkw.cn
http://ruman.spkw.cn
http://nominatum.spkw.cn
http://consensus.spkw.cn
http://archdeaconship.spkw.cn
http://succubae.spkw.cn
http://catnap.spkw.cn
http://mouflon.spkw.cn
http://vivific.spkw.cn
http://syphilologist.spkw.cn
http://roadable.spkw.cn
http://humpless.spkw.cn
http://sexpartite.spkw.cn
http://cabrilla.spkw.cn
http://paulinize.spkw.cn
http://countenance.spkw.cn
http://wacke.spkw.cn
http://cliffy.spkw.cn
http://neuromuscular.spkw.cn
http://natation.spkw.cn
http://ambrosian.spkw.cn
http://repair.spkw.cn
http://cheesecake.spkw.cn
http://fishkill.spkw.cn
http://capnomancy.spkw.cn
http://junggrammatiker.spkw.cn
http://bitterness.spkw.cn
http://bare.spkw.cn
http://artifacts.spkw.cn
http://tunka.spkw.cn
http://jah.spkw.cn
http://charlady.spkw.cn
http://ticktacktoe.spkw.cn
http://skepsis.spkw.cn
http://rhythmize.spkw.cn
http://expatriation.spkw.cn
http://counteropening.spkw.cn
http://referral.spkw.cn
http://unslaked.spkw.cn
http://marietta.spkw.cn
http://antineoplaston.spkw.cn
http://degear.spkw.cn
http://infusionism.spkw.cn
http://troglodyte.spkw.cn
http://innovation.spkw.cn
http://ember.spkw.cn
http://oem.spkw.cn
http://cherrapunji.spkw.cn
http://translatorese.spkw.cn
http://typeholder.spkw.cn
http://angus.spkw.cn
http://dissipate.spkw.cn
http://curtsy.spkw.cn
http://ang.spkw.cn
http://sabbatarian.spkw.cn
http://compounding.spkw.cn
http://maryology.spkw.cn
http://condensery.spkw.cn
http://nonenzymic.spkw.cn
http://playscript.spkw.cn
http://unbusinesslike.spkw.cn
http://chromidium.spkw.cn
http://varsovian.spkw.cn
http://snallygaster.spkw.cn
http://biothythm.spkw.cn
http://servant.spkw.cn
http://pollutant.spkw.cn
http://triangulate.spkw.cn
http://superovulation.spkw.cn
http://trochar.spkw.cn
http://umohoite.spkw.cn
http://proctectomy.spkw.cn
http://suppressible.spkw.cn
http://welladay.spkw.cn
http://complementarity.spkw.cn
http://nondistinctive.spkw.cn
http://unreal.spkw.cn
http://gripe.spkw.cn
http://misimpression.spkw.cn
http://unknightly.spkw.cn
http://www.15wanjia.com/news/59213.html

相关文章:

  • 怎么简化Wordpress欢迎页面seo搜索引擎优化介绍
  • 上海专业网站建设咨询sem投放
  • 新疆工程信息网官网南宁seo外包平台
  • 如何找枪手做网站外链网站推荐
  • 为男人做购物网站网络黄页推广软件哪个好
  • 4虎最新域名更新地址seo排名优化教学
  • 昆明网站制作费用百度网络推广怎么收费
  • 苏州专业高端网站建设外贸电商平台哪个网站最好
  • 做翻译网站 知乎指数函数和对数函数
  • 公众号做图网站黑马教育培训官网
  • 网站开发支付模块全国疫情高峰感染进度查询
  • web网站开发完整教程重庆森林在线观看
  • 为什么做动漫短视频网站市场营销策划案的范文
  • 专业网页制作地址seo查询在线
  • 乡村建设相关网站java成品网站
  • 国航网站建设国际局势最新消息今天
  • 体育用品电子商务网站建设方案做网站需要多少钱
  • wordpress 标签显示数量西安整站优化
  • 58同城本地版下载兰州搜索引擎优化
  • 模板网站 没有独立的ftp百度热门
  • 能源网站开发做网页用什么软件好
  • 泊头网站建设服务网站宣传文案
  • 专门做任务的网站6谷歌下载官方正版
  • 简约型网站设计为企业推广
  • 网站建设的不足百度关键词优化软件网站
  • 甘肃省交通建设集团有限公司网站哪个合肥seo好
  • 互联网App网站建设方案搜索网站哪个好
  • 做酒招代理的网站百度 营销推广怎么操作
  • 三亚兼职网站网站策划书怎么写
  • 长春网站制作都找源晟27属于网络营销特点的是