问题标签 [jsr330]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 是否可以用 JSR-330 @Scope 变体替换 Spring @Scope("request")?
org.springframework.beans.factory.config.Scope
或者,我可以使用特定的带@Scope
注释的注释来绑定接口的自定义实现吗?
例如,我自定义了一个新的作用域类型:
现在我想用它作为,
代替,
是否可以?
spring-context 中是否有类似“AnnotationPostProcessor”的东西?
java - 是否有 javax.inject.* 等效于 @Assisted
我们正在考虑使用 JSR-330 javax.inject.* 注释而不是 com.google.inject.* 等价物。看起来 JSR-330 标准不包括我在 Guice 中喜欢的几个特性。
具体来说,我认为不支持 @Assisted 关键字。另外,@AssistedInject 呢?@Inject 可以放在多个构造函数上吗?
我有兴趣成为供应商中立,但不以方便功能为代价。有什么建议吗?
spring - 什么时候应该使用绑定注释而不是更具体的接口?
问题
在做出以下决定时应使用哪些标准:
- 使用注释指定依赖项,以及
- 使用更具体的接口指定依赖项
例子
假设我有:
假设我想绑定FooLoader
到CachingFooLoader
,我有[至少]两种方式来连接它:
使用注解绑定
改变:
到:
进而:
创建更具体的界面
改变:
到:
在哪里NonCachingFooLoader
简单地 extends FooLoader
,然后有DBFooLoader
implement NonCachingFooLoader
,并相应地连接起来。
我的想法
出于多种原因,我被吸引到使用注释绑定:
- 键比接口更容易重用,这减少了接口可能遭受的组合爆炸。
- 它侵入性较小:配置保留在 Guice 模块中,而不是“中毒”类。
但是,创建更具体的界面也有其优点:
- 接口有更多的意义。通常只有 Guice 会读取注释,而接口的用途更多。
那么,应该使用什么标准来确定采用哪种方法呢?
(Spring 用户,据我所知,这就是你们所说的限定符。)
java - Guice 和 JSR-330
JSR-330 在包方面指定了某些命名约定,例如:
Guice 是 JSR-330 的参考实现。但是,在使用它时,您会注意到它不符合规范。例如:
到目前为止,我所看到的任何参考实现都不会发生这种情况。是什么让 Google Guice 如此特别,以至于作为 RI,他们可以忽略他们正在实施的规范?
annotations - javax.inject.Qualifier Spring JavaConfig
我有以下代码
2javax.Inject
预选赛
I 限定存储库
这些存储库是使用注入的javax.Inject
使用以下配置类
当我使用 XML 配置时,这段代码工作得很好,知道如何让它与 javaConfig 一起工作吗?或者我的代码中有什么根本错误?使用时会引发以下异常
线程“主”org.springframework.beans.factory.BeanCreationException 中的异常:创建名为“getInvoiceService”的 bean 时出错:注入自动装配的依赖项失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法自动装配字段:私有 com.domain.IRepository com.service.InvoiceService.iRepository;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到类型为 [com.domain.IRepository] 的匹配 bean:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注解:{@javax.inject.Inject(), @com.domain.Toplink()}
感谢期待。
java - 是否有与 Spring 的 @Value 注释等效的 JSR-330?
我正在尝试将 JSR-330 注释与 Spring 3 一起使用。
是否有@Value
用于插入属性值的 Spring 注释的 JSR-330 等效项?例如,我可以@Provider
以指示 Spring 注入属性值的方式使用吗?
java - 如何告诉 Glassfish 中的 JSF 2.0 将 CDI @Alternative 实例化为?
我们有一个在 Glassfish 3.1.1 下运行的 JSF 2.0 应用程序,该应用程序已从 JSF 1 向前推进。这意味着我有一个 faces-config.xml 说
这样做是为了允许#{OnlineBeanHandler}
在我的 facelet 页面中使用。效果很好。我还可以在OnlineBeanHandler 中使用 @javax.inject.Inject 来获取 CDI 托管 bean,然后我可以通过将其标记为 @javax.enterprise.inject.Alternative 并在 beans.xml 中启用它来提供替代方案。效果很好。
现在我需要为 OnlineBeanHandler 本身使用相同的机制 - 即让 -handling<managed-bean>
代码调用我的替代类而不是显式命名的类,但是当遵循相同的步骤时,我仍然得到我的基类而不是我的替代类。
这可以直接完成吗?如果可以,怎么做?
显然这种机制在那里不起作用。在当前情况下,我们可以创建另一个 faces-config.xml 文件,并让这些文件被那里的项目覆盖。然后,每个项目都会提供一个替换 faces-config.xml。
java - Java:如何使用反射检查方法是否被覆盖
我需要做一些处理来确定 JSR-330 注释类的依赖关系,使用反射。
我完全了解所有符合 JSR-330 的 IoC 容器,例如 Spring、Guice 或 PicoContainer。但是,我需要的不是解决和注入依赖项,而是识别它们。
这基本上意味着我需要实现 JSR-330 实现,至少在反射类“解析”方面是这样。
JSR-330 规范的一部分我觉得实现起来有点麻烦:
使用 @Inject 注释的方法覆盖使用 @Inject 注释的另一个方法,每个实例的每个注入请求只会注入一次。没有@Inject 注释的方法覆盖了@Inject 注释的方法将不会被注入。
这意味着子类可以重新定义其基类的自动装配合同,以及挂钩到注入流(通过多态性)。
我的问题来了:给定一个类层次结构,是否有一种简单的方法来检查层次结构的某个部分的方法是否在层次结构的更下方被覆盖?
在我的情况下,最简单的方法是从层次结构的叶子递归:
至于overriddenBy Guava-like Predicate,我会检查:
- 定义类的方法在 isAssignableFrom 关系中
- 方法名称相同
- 方法形式参数相同
就层次结构中的方法数量而言,由此产生的复杂度为 O(n^2)。
我想知道是否有一些更简单或更有效的方法来实现它,或者任何具有此类功能的库。我在 Guava 和 Apache Commons 中都没有成功...
java - JSR Bean Validation 和多个组,AND vs OR
有没有人遇到过需要有一个仅在满足所有组子句时才应用的约束。换句话说,对于
当任一组有效时应用非空约束。
如果我想在两个组都有效时应用约束怎么办?
拥有自定义组不是一种选择,因为在我的应用程序中有许多此类组的组合。
spring - 如何在测试期间注入 Test-Implementation,生产模式下的 Production-Implementation - Spring,JSR-330
让我们假设我有定序器和以下 Bean。Sequencer 负责从数据库序列中获取下一个值。OracleSequencer 用于生产模式,在 JUnit-Tests 期间使用 TestSequencer。
这就是我想使用它的方式:
我的问题是:当我在生产模式下运行应用程序时,我想在BusinessBean中注入OracleSequencer,当我运行 JUnit-Test 时,我想注入TestSequencer。JSR-330 (@Inject, @Named) 可以吗?
我找到了 2 个肮脏的解决方案:
在测试开始时,可以在 bean 中替换 Sequencer,该 bean 取自 Spring-ApplicationContext。当原型合适并且 TestSequencer 没有任何其他依赖项时,这是可能的:
BusinessBean bean = springContext.getBean(..); bean.setSequencer(new TestSequencer());
我们可以用@ProductionScope 注释OracleSequencer,用@TestScope 注释TestSequencer,并配置Spring 以适当的模式扫描适当的注释。
你可能有其他想法如何解决这个问题?
春天 3.1。