我有一个以下类别的StorageProxy。java(接口)StorageProxyImpl1。java(StorageProxy接口的实现1)
public class StorageProxyImpl1 extends StorageProxy{
public void init(String key){
....
}
}
public class Resource1{
private StorageProxy sp;
...
}
public class Resource2{
private StorageProxy sp;
...
}
我在Application类中有一个main方法,用于初始化和使用Resource1和Resource2。
public class MyApp{
public static void main(String args[]){
Resource1 r1 = new Resource1();
Resource2 r2 = new Resource2();
runApp(r1,r2);
}
public void runApp(Resource1 r1, Resource2 r2){ // Makes use of r1 and r2
...
}
}
我想为StorageProxy提供依赖注入的指导,这样在创建新的实现时就不会有太大的麻烦。我希望Resource1和Resource2使用相同的StorageProxy对象(即它应该是Singleton)。init与构造函数分离是至关重要的。总之,我需要创建StorageProxyImpl1的一个实例并调用StorageProxyImpl1。main方法中的init(String),这个实例应该由Resource1和Resource2共享。如何做到这一点?
Guice中提出的问题:如何在没有注入器或使用构造器注入的情况下获得Singleton实例有点高级别,如果没有具体的例子,我发现很难理解。
您可以使用提供程序接口
public class StorageProxyProvider implements Provider<StorageProxy> {
public StorageProxy get() {
StorageProxy storageProxy = new StorageProxy();
storageProxy.init();
return storageProxy;
}
}
public class StorageProxyModule extends AbstractModule {
protected void configure() {
bind(StorageProxy.class).toProvider(StorageProxyProvider.class).in(Singleton.class);
}
}
工作示例:
public class StorageProxyProvider implements Provider<StorageProxy> {
public StorageProxy get() {
StorageProxy storageProxy = new StorageProxy();
storageProxy.init();
return storageProxy;
}
}
public class StorageProxy {
public void init(){
System.out.println("init");
}
public void proxy(){
System.out.println("proxy");
}
}
public class StorageProxyModule extends AbstractModule {
protected void configure() {
bind(StorageProxy.class).toProvider(StorageProxyProvider.class).in(Singleton.class);
}
}
public class Example {
@Inject
StorageProxy storageProxy;
public void doSomethingThatNeedStorageProxy() {
System.out.println(storageProxy);
storageProxy.proxy();
}
}
public class Main {
public static void main(String[] args) {
Injector injector = Guice.createInjector(new StorageProxyModule());
Example e = injector.getInstance(Example.class);
e.doSomethingThatNeedStorageProxy();
e = injector.getInstance(Example.class);
e.doSomethingThatNeedStorageProxy();
}
}
我不知道这是否是实现我的解决方案的更好方法: 该类是可序列化的,因为我从数据库的Json中获取内容,并将内容映射到对象GetFromJson中(我只需要在数据库中执行一次查询)。因为这个原因,我需要在我所有的应用程序中使用对象,因为这个原因,我认为我需要使用一个单例 有人给我发布了一个库来从数据库中获取JSON。JSON对象解析为,因此我创建了我的类。 现在我有很多rest服务,在我的rest服务
我使用FFMPEG-segment对桌面上的视频捕获进行分段,并通过网络发送它们,以便提供给客户,并使用dash.js播放。问题是播放器正在搜索初始化段,而我似乎不知道如何创建它。 我使用以下ffmpeg命令创建段: 我为流创建的清单如下所示: 播放机调试模式打印以下内容: 如何为生成的段创建初始化段?我似乎无法让它起作用。
考虑以下代码: 以下是一些引用的标准 拷贝初始化 从cppreference复制引用的初始化 如果object是lvalue表达式,其类型是T或从T派生的,且具有相等或较少CV限定性,则该引用绑定到由lvalue标识的对象或其基类子对象。 如果object是lvalue表达式,其类型隐式转换为T或从T派生的类型,具有相等或较少CV限定性,则考虑源类型及其基类返回lvalue引用的非显式转换函数,并
我试图在登录后(从登录成功过滤器)获取用户的配置文件数据,但我发现延迟加载数据的异常。请参见以下示例代码: AuthenticationSuccessHandler。JAVA 用户服务。JAVA 用户模型。JAVA 用户登录响应to.java 当在中序列化UserLoginResponseDto类型的对象时,我会看到以下错误消息- org.hibernate.懒惰初始化角色集合失败:UserMod
使用具有以下初始化的创建的等效版本是什么?
我希望转换之间的HLS和MPEG破折号。我不能访问原始的完全串联的视频文件,只有个别的HLS段。 在进行到MPEG破折号的转换时,我需要为破折号manifest.mpd文件提供一个初始化段。 我的问题是: null 非常感谢。 更新:使用原始hls段的流代码段。视频一直在播放,但只是黑色的。