我是依赖注入的新手,最近不得不学习 Spring 和 Guice。下面的问题可能很蹩脚。
Spring 允许您使用 @Scope("prototype") 注释创建原型对象,这意味着每次都返回一个新对象
例如在我的弹簧容器中:-
@Scope("prototype")
@Bean
A getA(){
return new A();
}
Run Code Online (Sandbox Code Playgroud)
并且在@autowired 的所有引用中注入了一个新对象A。
class B {
@Autowired
A objA;
}
Run Code Online (Sandbox Code Playgroud)
但是,在 guice 注入器中,正在注入相同的实例。看起来 guice 只提供单例、请求或会话范围https://github.com/google/guice/wiki/Scopes。我的应用程序不完全是一个 Web 服务,我想知道如何在任何地方注入对象的新实例。我读过可以使用提供程序,但找不到任何蹩脚/简单的例子来理解。
我如何将 A 的新实例注入 B 或任何其他类?使用 Guice,目前我只能在 guice 容器中注入具有以下所有类的相同实例
bind(A.Class).toInstance(new A());
new B(); // or create with other ways
Run Code Online (Sandbox Code Playgroud) 这个问题更多地是关于开发Web服务时的最佳实践。这可能有点含糊
可以说我的服务使用Spring容器,该容器为所有请求创建一个标准控制器对象。现在,在我的控制器中,我注入了在spring容器中创建一次的Dynamo Db映射器实例。 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.OptionalConfig.html
题:-
我们是否应该创建DynamoDb客户端对象和映射器的池,以便从池中提供对服务的并行请求?还是应该为所有请求注入DynamoDb映射器对象的相同/新实例?为什么我们不使用C3PO之类的Dynamo Db连接呢?