retriever

spring源码分析系列 (15) 设计模式解析

只谈情不闲聊 提交于 2020-11-21 02:37:59
spring是目前使用最为广泛的Java框架之一。虽然spring最为核心是IOC和AOP,其中代码实现中很多设计模式得以应用,代码看起来简洁流畅,在日常的软件设计中很值得借鉴。以下是对一些设计模式的理解以及源码解析,希望能给大家对设计模式的理解有所帮助。 观察者模式:发布/订阅 更多设计模式更新中..... (基于spring-4.3.23.RELEASE分析) 1、观察者模式: 发布/订阅 如对观察者模式还不是很有概念,可以 点击这里 。spring中ApplicationEvent事件通知就是观察者模式的变种,巧妙的利用事件驱动机制实现容器刷新。开发者可充分利用该机制,实现框架的深度定制。下面分为几点展开: spring中实现观察者设计模式的各个角色。 容器刷新中使用到的事件。 依据spring机制实现事件的发布/订阅 定制化框架 。 (a) spring中实现观察者模式的各个角色: ApplicationEventMulticaster 是一个接口,定义了事件管理的基本行为,目前spring只有一个实现类和一个抽象类。这里先贴出定义理解各个角色的作用,后边一点点串联整个功能。 public interface ApplicationEventMulticaster { /** * 增加一个具体事件监听器 */ void addApplicationListener

spring ApplicationEvent

老子叫甜甜 提交于 2020-05-07 16:19:22
最近在看apollo源码,发现一个自己没怎么玩过的东西,就研究下看看,就是事件的监听。 定义一个事件类MyEvent。 public class MyEvent extends ApplicationEvent { public MyEvent (Object source) { super (source) ; } public EventDto getEventDto () { return (EventDto) getSource() ; } } 定义一个事件传输对象类EventDto,就是相当于一个事件的载体。 @Data public class EventDto { private String name ; private String content ; } 定义一个监听类MyListener,用于接受处理订阅事件,如果这里有多个需要订阅的相同的事件的类的话,就可以在写一个MyListenerB,然后实现ApplicationListener<MyEvent>即可。 @Component public class MyListener implements ApplicationListener<MyEvent> { @Override public void onApplicationEvent (MyEvent event) { try { EventDto

Spring中的设计模式--观察者模式

浪子不回头ぞ 提交于 2020-04-28 04:01:08
spring在容器中使用了观察者模式: 一、spring事件:ApplicationEvent,该抽象类继承了EventObject类,jdk建议所有的事件都应该继承自EventObject。 二、spring事件监听器:ApplicationLisener,该接口继承了EventListener接口,jdk建议所有的事件监听器都应该继承EventListener。 Java代码 public interface ApplicationListener<E extends ApplicationEvent> extends EventListener { /** * Handle an application event. * @param event the event to respond to */ void onApplicationEvent(E event); } 三、spring事件发布:ApplicationEventPublisher 。 ApplicationContext继承了该接口,在ApplicationContext的抽象类AbstractApplicationContext中做了实现。 package org.springframework.context; public interface ApplicationEventPublisher { /*

2、监听器模式

我的未来我决定 提交于 2020-02-26 07:27:03
当在IDEA中点击Download Sources时报错cannot download sources,解决办法,在Terminal中输入 mvn dependency:resolve -Dclassifier=sources 参考:https://www.cnblogs.com/wwjj4811/p/10364580.html 系统运行到某些关键节点时,会通过广播发布一些事件,而系统中存在一些监听器对这些事件感兴趣,会监听到这些事件,从而触发某种行为 1.1、监听器加入SpringBoot容器 @SpringBootApplication public class SpringbootApplication { public static void main(String[] args) { SpringApplication.run(SpringbootApplication.class, args); } } // 走到SpringApplication的构造函数,这边代码第一节也分析过 public SpringApplication(ResourceLoader resourceLoader, Class<!--?--> primarySources) { this.resourceLoader = resourceLoader; Assert.notNull

FFMPeg exception setDataSource failed: status = 0xFFFFFFFF

匿名 (未验证) 提交于 2019-12-03 09:02:45
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I have 175 mp4 files. When I process file from index 0 to index 65 (or 66), I get exception: java.lang.IllegalArgumentException: setDataSource failed: status = 0xFFFFFFFF at wseemann.media.FFmpegMediaMetadataRetriever.setDataSource(Native Method) at com.jni.utils.Mp4ParserUsingFFMpeg.createThumbnail(Mp4ParserUsingFFMpeg.java:518) at com.example.readmdtfile.activity.MainActivity$createMp4Async.createThumbnail(MainActivity.java:71) at com.example.readmdtfile.activity.MainActivity$createMp4Async.doInBackground(MainActivity.java:55) at com

MediaMetadataRetriever.setDataSource(Native Method) causes RuntimeException: status = 0x80000000

匿名 (未验证) 提交于 2019-12-03 02:27:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I try to get some metadata informations from jpg file in my android app using android.media.MediaMetadataRetriever. Here is my code: public long getDuration(String videoFilePath, Context context) { File file = loadVideoFile(videoFilePath); if (file == null) { return -1; } MediaMetadataRetriever retriever = new MediaMetadataRetriever(); file.setReadable(true, false); retriever.setDataSource(file.getAbsolutePath()); return getDurationProperty(retriever); } When I call setDataSource method it throws RuntimeException: 09-10 15:22:25.576: D