草庐IT

Autowired注入

全部标签

java - 在 Spring 中使用 @Inject 进行字段注入(inject)

我在Spring中使用@Inject时遇到了一些奇怪的行为。这个例子运行良好:@Controller@RequestMapping("/")publicclassHomeController{@AutowiredprivateSomeBeansomeBean;@RequestMapping(method=GET)publicStringshowHome(){System.out.println(someBean.method());return"home";}}但是如果我用@Inject替换@Autowired,showHome方法将抛出NullPointerException因为so

java - 名称依赖注入(inject)如何在 Spring @Bean 方法参数中工作

我了解SpringDI及其一般工作原理。但我在这里无法理解的是在@Bean方法参数注入(inject)的情况下,spring如何知道参数名称以便它可以根据参数名称从其bean工厂注入(inject)bean?例如,在下面的示例中,方法fernas1和fernas2参数在运行时被删除。但是,spring仍然可以将正确的Abbasbean实例注入(inject)其中。@SpringBootApplicationpublicclassDemoApplication{@AutowiredprivateAbbasabbas1;//thisisunderstandable,hencethefiel

java - 在 SonarQube 中使用 Spring 构造函数注入(inject)

我有一段带有字段注入(inject)的代码,我正试图将其转换为使用构造函数注入(inject)。初始代码如下所示:@AutowiredprivateEnvironmentenv;@AutowiredprivateYYYAdaptoryyyAdaptor;@AutowiredprivateJAXBContextjaxbContext;这就是我重写它的方式:privateEnvironmentenv;privateYYYAdaptoryyyAdaptor;privateJAXBContextjaxbContext;@AutowiredpublicYYYResource(Environmen

java - 使用 Guice 的构造函数注入(inject)

我有一些使用工厂的示例代码。我想通过删除工厂并改用Guice来清理代码。我试图这样做,但遇到了一个小障碍。我是Guice的新手,所以我希望有人能帮助我。现有客户端代码(使用工厂):publicclassMailClient{publicstaticvoidmain(String[]args){MailConfigconfig=MailConfigFactory.get();config.setHost("smtp.gmail.com");Mailmail=MailFactory.get(config);mail.send();}}我尝试使用Guice进行重构://Replacesexi

java - 使用 Guice,如何注入(inject)父类(super class)的构造函数参数?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:GuicewithparentsclassBook{stringtitle;}classChildrensBookextendsBook{}classScienceBookextendsBook{}我想在子类中注入(inject)书名,例如,childrensBook应该被分配标题“AliceinWonderland”,ScienceBook应该被分配“OntheOriginof物种”。我如何使用Guice完成此操作?(注意我不想覆盖子类中的title字段)

java - 以编程方式将 Bean 注入(inject) CDI 上下文?

是否可以手动将bean注入(inject)到CDI上下文中?使用JBossSeam框架,我总是可以执行类似Contexts.getConversationContext().set("foo",bar);这样的操作,Bean将成为该上下文的一部分。是否可以在JavaEE6CDI中执行类似的操作? 最佳答案 使用CDI,您必须稍微改变您对作用域bean的看法。在Seam2中,上下文只是保存在特定范围内的map,您可以访问这些map。在CDI中,容器获得了对上下文的控制权,并且只允许您在具体范围内声明bean,并且所有内容都在后台进行管

java - 打破循环依赖以使用依赖注入(inject)

我刚开始使用dagger2并且之前没有使用过任何其他依赖注入(inject)框架。现在我陷入了循环依赖,我不知道如何正确解决它。考虑服务器应用程序中的以下示例,它使用Reactorpattern使用JavaNIO:我有一个Handler对象附加到选择键,当新信息到达网络时执行:classHandlerimplementsRunnable{Serverserver;Clientclient;publicvoidrun{//staticfactorymethodthateventuallycallsamethodonserver,passingin'client'asargumentCom

java - 如何在内存数据库中使用带有 play java 的注入(inject)测试

playdocumentationaboutfunctionaltestsinjava显示两种模式使用fakeApplication指定自定义配置(在示例中为内存数据库)使用依赖注入(inject)配置应用我想使用依赖注入(inject),但我必须在应用程序启动时设置自定义配置,例如使用内存数据库。我无法做到这一点。我想这必须在guicebuilder中完成,但我不知道如何做。 最佳答案 我假设您正在使用Guice进行DI。关于issue的讨论4809在框架的github存储库上应该有助于回答您的问题。我能够使用该问题的解决方案之一

java - 在 ResourceContext initResource 创建的 JAX-RS 子资源实例中不可能进行 CDI 注入(inject)

我有一个JAX-RS资源类,它使用@ContextResourceContext为每个资源类型创建子资源实例,提供到子资源类的路径路由。在这个例子中,我正在实例化一个报告子资源。资源@ContextResourceContextrc;@Path("reports")publicReportsResourcereportsResource(){returnrc.initResource(newReportsResource());}子资源需要一个ReportService类的实例(用@Stateless注释定义),自然的解决方案是@Inject它...报告子资源@InjectReport

java - 可选注入(inject) Dagger 2

是否可以选择性地在dagger2中注入(inject)一个值?特别是,我想做这样的事情。@InjectA(Optionalb){this.b=b;}如果B在模块中未定义,我希望dagger提供一个Optional.empty(),如果它已定义则提供Optional.of(value).这是可行的还是我需要一个定义这些可选值的模块? 最佳答案 可选注入(inject)需要一个模块来将可选绑定(bind)添加到您的组件,因为Dagger需要依赖图上的每个依赖项,即使是显式缺失的依赖项。当你想用一个实现来实现这个可选时,你将向一个组件添加