小编Oma*_*bji的帖子

具有多个接口实现的Spring Autowire注释

假设您有一个界面

public interface A {
  public void doSomething();
}
Run Code Online (Sandbox Code Playgroud)

和两个实现类

@Component(value="aImpl1")
public class AImpl1 implements A {

}

@Component(value="aImpl2")
public class AImpl2 implements A{

}
Run Code Online (Sandbox Code Playgroud)

最后一个将使用"A"实现的类:

@Component
public class MyClass {
  @Autowire
  A a;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我想注入AImpl1,我添加@Qualifier("aImpl1"),而如果我想注入AImpl2,我添加@Qualifier("aImpl2")

问题是:是否有可能以某种方式指示spring查找"A"的所有实现,在这种情况下是AImpl1AImpl2,并使用一些特定于应用程序的约定来选择最合适的实现?例如,在这种情况下,我的约定可以使用具有最大后缀的实现(即AImpl2)?

编辑:类MyClass根本不应该知道实现查找逻辑,它应该只找到它的属性"a"设置与AImpl2的对象.

java spring

11
推荐指数
2
解决办法
1万
查看次数

bean-validation validation.xml被忽略

我在我的JSF 2.0 Web应用程序中使用JSR 303 Bean验证,它可以正常使用注释.现在我想忽略注释并使用validation.xml文件配置验证规则,所以这就是我所做的(我使用的是eclipse动态Web项目):

  1. 新增的validation.xml的WebContent/META-INF/validation.xml中

    <?xml version="1.0" encoding="UTF-8"?>
    <validation-config
    xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration validation-configuration-1.0.xsd"
    >
    
      <constraint-mapping>META-INF/validation/constraint-mapping.xml</constraint-mapping>
    
    </validation-config>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后创建的文件约束mapping.xml的WebContent/META-INF /验证/约束mapping.xml

    <constraint-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd"
                 xmlns="http://jboss.org/xml/ns/javax/validation/mapping">
    
    <bean class="my.full.path.ValidationMB" ignore-annotations="true">
    
    </bean>
    
    </constraint-mappings>
    
    Run Code Online (Sandbox Code Playgroud)

有了这些配置,我想我的bean类ValidationMB中的注释将被忽略,但这不会发生!,这使我假设没有加载validation.xml文件.

有任何想法吗?谢谢.

环境:

  1. Apache Tomcat 7.0.23
  2. javax.faces-2.1.4.jar
  3. 休眠 - 验证 - 4.2.0.Final.jar
  4. 冬眠验证器的注释处理器的4.2.0.Final.jar
  5. 验证-API 1.0.0.GA.jar
  6. SLF4J-API-1.6.1.jar

从规范:第4.4.6节.XML配置:META-INF/validation.xml

除非通过调用Configuration.ignoreXMLConfiguration()明确忽略,否则Configuration会考虑META-INF/validation.xml中可用的配置.此配置文件是可选的,但应用程序可以使用它来优化某些Bean Validation行为.如果在类路径中找到多个META-INF/validation.xml文件,则会引发ValidationException.

bean-validation jsf-2

3
推荐指数
1
解决办法
8456
查看次数

标签 统计

bean-validation ×1

java ×1

jsf-2 ×1

spring ×1