我正在尝试在按照单例方法实现的类中注入(inject)一个记录器对象。代码大概是这样的:Logger类:publicclassLoggerFactory{@ProducespublicLoggergetLogger(InjectionPointcaller){returnLogger.getLogger(caller.getMember().getDeclaringClass().getName());}}然后我创建一个需要记录器并实现单例模式的类:publicclassMySingleton{@InjectprivateLoggerlogger;privateMySingletoni
当我使用CDI时,我可以使用@Produces注解创建一个生产者方法被调用来选择实现接口(interface)的bean将由@Inject注解注入(inject)。现在我正在使用Spring,但我没有找到任何类似的东西。当我使用@Autowired注释时,我需要使用什么来实现与CDI中的@Produces注释相同的结果? 最佳答案 您正在寻找@Bean:@Beanisamethod-levelannotationandadirectanalogoftheXMLelement.Theannotationsupportsmostofth
当我使用CDI时,我可以使用@Produces注解创建一个生产者方法被调用来选择实现接口(interface)的bean将由@Inject注解注入(inject)。现在我正在使用Spring,但我没有找到任何类似的东西。当我使用@Autowired注释时,我需要使用什么来实现与CDI中的@Produces注释相同的结果? 最佳答案 您正在寻找@Bean:@Beanisamethod-levelannotationandadirectanalogoftheXMLelement.Theannotationsupportsmostofth
在CDI中,您可以定义一个对象,该对象将为您提供特定类型的项目,使用:@InjectInstancemyObjectInstance;//...MyObjectmyObjectInstance.get();在Guice中您也可以这样做:@InjectProvidermyObjectInstance;//...MyObjectmyObjectInstance.get();我想知道Spring中是否有类似的构造,或者您必须使用ApplicationContext才能获得引用? 最佳答案 所以经过大量挖掘后,我发现Spring支持JSR-
在CDI中,您可以定义一个对象,该对象将为您提供特定类型的项目,使用:@InjectInstancemyObjectInstance;//...MyObjectmyObjectInstance.get();在Guice中您也可以这样做:@InjectProvidermyObjectInstance;//...MyObjectmyObjectInstance.get();我想知道Spring中是否有类似的构造,或者您必须使用ApplicationContext才能获得引用? 最佳答案 所以经过大量挖掘后,我发现Spring支持JSR-
在CDI1.2中有一种方法可以检查类实例是否被代理?我需要这个,因为我需要获取原始类的名称,而不是代理名称。@InjectBeanbean;publicvoidsysout(){//willprintsomethinglikecom.Bean$$Weld9239823System.out.println(bean.getClass());//Idon'tknowhowtocheckifthebeaninstanceifaproxyorrealclassinstance}使用Weld类我可以完成这项工作:publicvoidsysout(){//willprinttruebecauset
Spring的@Autowire可以配置为,如果没有找到匹配的Autowiring候选者,Spring不会抛出错误:@Autowire(required=false)是否有等效的JSR-330注释?如果没有匹配的候选者,@Inject总是失败。如果没有找到匹配的类型,有什么方法可以使用@Inject但框架不会失败?我还没有找到这种程度的任何文档。 最佳答案 您可以使用java.util.Optional。如果您使用Java8并且您的Spring版本是4.1或更高版本(请参阅here),而不是@Autowired(required=f
Spring的@Autowire可以配置为,如果没有找到匹配的Autowiring候选者,Spring不会抛出错误:@Autowire(required=false)是否有等效的JSR-330注释?如果没有匹配的候选者,@Inject总是失败。如果没有找到匹配的类型,有什么方法可以使用@Inject但框架不会失败?我还没有找到这种程度的任何文档。 最佳答案 您可以使用java.util.Optional。如果您使用Java8并且您的Spring版本是4.1或更高版本(请参阅here),而不是@Autowired(required=f
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭9年前。Improvethisquestion对于Java开发人员来说,Spring一直是一个很好的DI和AOP框架。现在,DI和AOP有了一个标准规范,即CDI。如果不支持相关标准,任何好的产品都不能再保持良好状态。(比如Hibernate支持JPA规范)我的问题是,Spring是否会在其future版本中支持标准规范(CDI)? 最佳答案 尽管Spring是开源的,并得到一个大
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭9年前。Improvethisquestion对于Java开发人员来说,Spring一直是一个很好的DI和AOP框架。现在,DI和AOP有了一个标准规范,即CDI。如果不支持相关标准,任何好的产品都不能再保持良好状态。(比如Hibernate支持JPA规范)我的问题是,Spring是否会在其future版本中支持标准规范(CDI)? 最佳答案 尽管Spring是开源的,并得到一个大