Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导中的配置继承和不同的属性源_Java_Spring_Spring Boot_Inheritance_Autowired - Fatal编程技术网

Java Spring引导中的配置继承和不同的属性源

Java Spring引导中的配置继承和不同的属性源,java,spring,spring-boot,inheritance,autowired,Java,Spring,Spring Boot,Inheritance,Autowired,在配置类中使用Spring引导和继承,我尝试执行以下操作: @Getter // Lombok annotation to automatically generate getters @Setter // Same for setters public abstract class AbstractConfiguration { @Value("${hello}") protected String hello; } @Configuration @Qualifier(n

在配置类中使用Spring引导和继承,我尝试执行以下操作:

@Getter // Lombok annotation to automatically generate getters
@Setter // Same for setters
public abstract class AbstractConfiguration {

    @Value("${hello}")
    protected String hello;
}


@Configuration
@Qualifier(name = "en")
@PropertySource(value = "classpath:hello_en.properties")
public class EnglishConfiguration extends AbstractConfiguration {

}

@Configuration
@Qualifier(name = "fr")
@PropertySource(value = "classpath:hello_fr.properties")
public class FrenchConfiguration extends AbstractConfiguration {

}
使用属性文件:

你好_en.properties

hello=Hello !
hello=Bonjour !
你好\u fr.properties

hello=Hello !
hello=Bonjour !
然后在代码的其他地方,我会以这种方式使用配置类:

@Autowired
@Qualifier(name = "en")
private AbstractConfiguration englishConfiguration;

@Autowired
@Qualifier(name = "fr")
private AbstractConfiguration frenchConfiguration;


.....

public void test() {

    System.out.println(englishConfiguration.getHello()); // Should print "Hello !"

    System.out.println(frenchConfiguration.getHello()); // Should print "Bonjour !"
}
基本上,我的想法是,随着更多语言的添加,我只需要添加一个新的XXXXConfiguration类和一个匹配的新属性源,而不是重构或修改以前编写的任何代码。我相信我正在尝试应用S.O.L.I.D.的开放/封闭原则

当前的示例不起作用,我犯了哪些错误?我如何才能改进代码,使其尽可能干净?关于
@配置
@限定符
,有什么我不了解的吗

另外,编写
@Configuration(name=“en”)
@Configuration@Qualifier(name=“en”)
之间有什么区别吗


亲爱的读者,提前感谢您的帮助。

您不认为有更好的方法来实现国际化(i18n)吗?当然有,但我承认我对任何方法都不熟悉,我只是认为我可以重用我现有的知识并将其应用于此用例。有什么建议吗?此外,从正确实现i18n开始,我真的很有兴趣了解如何使示例工作,即使只是为了它。检查我的回答:哦,我明白了,所以您只使用了一个属性源和@ConfigurationProperties!非常感谢:)暂时不讨论这个问题,看看是否有其他方法可以解决这个问题!