Tag: dependency injection

什么是JavaFX中的“将位置和资源属性自动注入控制器”?

在Initializable接口的描述中,它被说成: 注意此接口已被位置和资源属性自动注入控制器所取代。 FXMLLoader现在将自动调用由控制器定义的任何适当注释的no-arg initialize()方法。 建议尽可能使用注射方法。 问题是:如何“合适注释”方法? 我只找到一个注释 – @FXML 。 还有其他人吗?

Spring 3.0dependency injection的最小JAR

与早期Spring版本的这个问题类似,应用程序仅使用Spring 3.0dependency injection所需的最小依赖项是什么? 应用程序上下文仅由XML配置。 Spring依赖于日志框架,所以假设我已经包含这些JAR用于日志记录: JCL-过slf4j.jar 的logback-classic.jar 的logback-core.jar添加 SLF4J-api.jar文件

您使用什么技术来调试复杂的guice绑定?

我有一组复杂的绑定,包括许多私有绑定来解决机器人腿问题 。 由于Guice报告可理解的绑定错误的能力有限,我想知道除了阅读之外还有哪些有效的工具或技术,Guice的运行时exception可用于解决运行时绑定错误。 单步执行配置代码没有帮助,因为配置发生在引导时而不是通常发生错误的对象实例化时。 如果Guice图形插件有效,它可能会很有用 – 我的实验结果导致图形不正确。

为什么我在Spring配置类中不需要@Autowired @Bean方法?

为什么这样做: @Configuration public class MyConfig { @Bean public A getA() { return new A(); } @Bean <– Shouldn't I need @Autowired here? public B getB(A a) { return new B(a); } } 谢谢!

在静态方法中使用注入bean的正确方法是什么?

这个问题看起来有点奇怪。 假设我有一个服务,我想在具有一些静态方法的Utility类中使用。 该服务是一个Spring bean,所以我自然会使用一个setter和(@Autowired)将它注入我的实用程序类。 正如Spring的文档中提到的,所有bean在bean上下文中都是静态的。 因此,当您想要在类中注入bean时,您不必使用“static”修饰符。 见下文: public class JustAClass{ private Service service; public void aMethod(){ service.doSomething(….); } @Autowired public void setService(Service service){ this.service = service; } } 现在回到我先提到的(在静态方法中使用Service): public class JustAClass{ private static Service service; public static void aMethod(){ service.doSomething(….); } @Autowired public void setService(Service service){ this.service = service; } } public class JustAClass{ […]

使用PowerMock或您的测试对您的设计有多大影响?

多年来我一直是EasyMock的粉丝,多亏了SO,我遇到了对PowerMock的引用,并且它能够模拟构造函数和静态方法,这两种方法在将测试转换为遗留代码库时会导致问题。 显然,unit testing(和TDD)的巨大好处之一是它导致(强制?)更清洁的设计,在我看来,PowerMock的引入可能会减损它。 我会看到这主要表现为: 回到初始化合作者而不是注入它们 使用静态而不是使方法归协作者所有 除此之外,关于我的代码被操作用于测试的字节码,对我来说并不合适。 我不能真正给出具体的理由,只是因为它只是为了测试而不是为了生产而让我感到有点不安。 在我目前的演出中,我们真的推动unit testing作为人们改进编码实践的一种方式,并且感觉将PowerMock引入等式可能会让人们稍微跳过这一步,所以我不愿意开始使用它。 话虽如此,我真的可以看到在哪里使用它可以减少开始测试类需要完成的重构量。 我想我的问题是,人们使用PowerMock(或任何其他类似的库)获得这些function的经验是什么,您是否会使用它们以及您希望您的测试对您的设计有多大影响?

以单例模式使用CDI

我正在尝试在一个按照单例方法实现的类中注入一个logger对象。 代码几乎看起来像这样: Logger类: public class LoggerFactory { @Produces public Logger getLogger(InjectionPoint caller){ return Logger.getLogger(caller.getMember().getDeclaringClass().getName()); } } 然后我创建一个需要logger并实现Singleton模式的类: public class MySingleton{ @Inject private Logger logger; private MySingleton instance; /* * Private constructor for singleton implementation */ private MySingleton(){ logger.info(“Creating one and only one instance here!”); } public MySingleton getInstance(){ if(instance == null) { instance = new […]

@Component和@Named都是同一个bean类

在Spring应用程序中充当bean的类是否同时需要@Component和@Named ? 如果两者都这样使用有什么意义? 我尝试搜索网络,并看到这些注释的标准文档,发现它们有点令人困惑。 如果@Named注释没有为bean指定任何名称,最后应用程序采用哪个名称?

抽象超类中的Generic @Inject’d字段

考虑一组MVP-ish类型。 存在一个抽象的Presenter,带有View接口: public interface View { //… } public abstract class AbstractPresenter { @Inject V view; //… } 然后,让我们有一个特定的具体的presenter子类,其视图接口和实现: public interface LoginView extends View { //… } public LoginPresenter extends AbstractPresenter { //… } public class LoginViewImpl implements LoginView { //… } 在Dagger模块中,我们当然会定义一个@Provides方法: @Provides LoginView provideLoginView() { return new LoginViewImpl(); } 在Guice中你可以用同样的方式编写它,或者只是bind(LoginView.class).to(LoginViewImpl.class) 。 但是,在Dagger(来自Google的v1和2.0-SNAPSHOT)中,这会产生错误,因为在为AbstractPresenter创建绑定接线时,它无法确定V是什么。 另一方面,Guice指出,因为它实际上是在创建一个LoginPresenter […]

如何在servlet中使用dependency injection?

如何将对象注入servlet? 我的意思是,我不能使用构造函数DI,因为servlet由servlets容器实例化。 而且我也没有看到为servlet实现基于setter的DI的好方法。 我应该使用servlet监听器吗? 有没有最好的做法? PS我既没有Spring也没有Guice,也没有任何其他DI框架,我对手动dependency injection感兴趣。