Tag: dependency injection

使用@Autowired将依赖项注入使用“new …”创建的对象中

将bean注入helper类时遇到问题。 它基本上是这样的:我在页面构造函数中创建了一个对象,它可以完成一些工作,返回一些数据并在页面上显示这些数据。 在此辅助对象中,应通过@Autowired批注注入服务。 但是,当我使用它时,我总是得到一个空指针exception。 我也试过@SpringBean但没有帮助。 另一方面,当我使用@SpringBean将此服务直接注入到页面中时,它可以访问并且工作正常。 你知道问题出在哪里吗? 这是页面: public class Page extends BasePage { public Page() { HelperObject object = new HelperObject(new Application(“APP_NAME”)); String result = object.getData(); add(new Label(“label”, result)); } } 助手对象: public class HelperObject { private Application app; @Autowired private Service service; public HelperObject(Application app) { this.app = app; } public String getData() […]

何时应该使用Instance 和Provider 在CDI中注入bean?

我一直在阅读Instance和Provider的API文档,但是它们何时应该被使用还不是很清楚。 以下方法有什么区别? @Inject MyBean bean; @Inject Instance bean; @Inject Provider bean;

是否可以将包中的所有类注册为Spring bean

我熟悉基于Springs Java的配置选项,包括使用@Component和@Configuration以及@Bean注释来注册Spring bean。 但是,在将一个体面的项目转换为Spring时,系统地触摸项目中的所有类并使用@Configuration @Bean更新或使用@Component注释每个类可能非常耗费人力。 我们有一个很大的Groovy项目要转换,我想简化这个过程。 我的问题: Spring中是否提供了一个工具,允许您告诉Spring在特定包中自动配置所有有效的bean候选类? 如果没有,还有哪些其他选择?

@Component和@Repository / @Service注释的处理方式有何区别?

今天我在Spring 3.0中偶然发现了一个相当奇怪的问题: 有一个抽象类A及其具体实现A_Impl 。 A_Impl注释为A_Impl ,由Spring自动扫描( 和都在上下文中声明)。 A和A_Impl部署在单独的JAR中(不确定是否重要)。 一切正常。 现在,我正在审查代码, @Repository在语义上看起来不太合适(这个类与持久性无关)所以 – 在我的无限智慧中 – 我决定将其更改为更通用的@Component 。 不用说,一切都爆炸了,让我看起来像一个完全白痴。 错误(在Spring上下文初始化期间发生)是Spring的ClassPathResource.getInputStream()方法抱怨A类不存在(它是,我手动检查;加上常规类加载器发现它很好) 没有其他改变 。 如果我将@Component交换为@Repository上下文初始化,如果我将它们交换回来,则不会出现上述错误。 Spring文档声称 @Component和@Repository之间没有区别 ,这显然是一个该死的谎言:-)所以我想知道 – 有什么区别?

在Web容器外的Java 6中使用Guice 3和JAX-WS

我们有一种情况,我们使用基于JSR-330的注入来配置我们的独立Java 6应用程序,这非常适合在所有层中获取配置参数。 我们还使用JAX-WS Web服务很长一段时间,在Web容器中使用Java 5的第一个独立Metro分发,但是使用Java 6我们只使用Endpoint类来减少占用空间。 所以现在我有一个情况 一个独立的Java 6应用程序 – 没有servlet容器(Jetty,Tomcat) Guice 3 Injector按照我喜欢的方式设置。 处理我的@javax.jws.WebService注释类的Endpoint ,它将我的方法公开为Web服务。 我希望Web服务方法要么透明地处理它们的@Inject字段,要么访问注入器。 我可以从主方法中获取它作为静态字段,但我想要一个更清洁的解决方案。 有什么建议么? (我从JAX-WS和Guice 3了解到http://jax-ws-commons.java.net/guice/模块不能与Guice 3一起使用,建议的解决方法是特定于Tomcat) JSR-250 @Resource注释在这里有用吗?

Guice Servlets的简单示例

我不知道如何处理一个简单的guice示例。 阅读完文档后,我完成了以下工作: 设置guiceFilter 创建一个注入器并在GuiceServletContextListener实例化一个新的ServletModule并将该侦听器添加到web.xml bound serve(“*.jsp”).with(IndexController.class); 在配置servlet中 在我完成之后如何使用dependency injection? 假设我有一个index.jsp,IndexController.class(s​​ervlet),以及两个名为Person和Order with Person的类,具体取决于Order。 如何通过guice将Orderdependency injection到Person构造函数中,在我这样做之后,我需要返回说这个人的命令列表回到控制器? 我在过去使用过Ninject和ASP.NET MVC,这很简单,但我对如何使用Guice实现最简单的DI示例感到很困惑。 谢谢。

应用服务器如何注入私有字段?

我看到了这个问题 注入私人,包装或公共领域或提供制定者? 关于如何手动注入带注释的私有字段(方式是添加setter或通过构造函数) 但是,重点是应用程序服务器(如glassfish,axis2,jboss,…)如何能够注入最终的私有字段(不向用户类添加setter或构造函数)? 引用引用的问题: public SomeClass { @Inject private SomeResource resource; } 他们是否使用允许访问私有字段的自定义JVM(不是标准的JVM)? 谢谢

使用Google Guice和静态方法注入Util类?

我想知道用google guice注入实用程序方法是否是一种好方法。 假设我们有一个转换器实用程序类: public class UtilClass { public static Result convert(Source src) { //Do conversion return result; } } 我的想法是使用guice将这个实用程序注入像这样的Singleton @Singleton public class UtilClass { public Result convert(Source src) { //Do conversion return result; } } 对于使用guice构建的应用程序,建议采用哪种方式?

Spring ServiceLocator还是纯工厂模式?

99%的依赖关系通过@Autowired Spring注释来管理DI模式。 然而,在特定情况下,我无法确定在运行时使用哪个实现。 最着名的情况是解析器的多重实现。 第一个解决方案是使用多个@Autowired(丑陋模式) Interface Parser { T parse(); } @Component(“JsonParser”) class JsonParser implements Parser { … } @Component(“XmlParser”) class XmlParser implements Parser { … } class MyService { @Autowired @Qualifier(“XmlParser”) Parser xmlParser; @Autowired @Qualifier(“JsonParser”) Parser jsonParser; … } 但是如果我有大量的实现,那是不可接受的。 第二个解决方案是使用Spring的ServiceLocator interface ParserServiceLocatorFactory { public Parser getParser(String parserName); } interface Parser { T parse(); […]

Spring何时创建注入对象的实例

Spring执行DI并创建对象,这样您的程序就不必担心创建对象了。 但这里的问题是何时创建了一个注入对象的实例。 是在主程序使用实例时还是在创建主程序实例时。