gpt4 book ai didi

java - Spring 限定符和属性占位符

转载 作者:行者123 更新时间:2023-12-01 17:35:09 24 4
gpt4 key购买 nike

有谁知道我是否应该能够使用属性占位符作为限定符中的表达式?我似乎无法让这个工作。

我使用的是 spring 3.0.4。

@Controller
public class MyController {
@Autowired
@Qualifier("${service.class}")
Service service;
}

@Service
@Qualifier("ServiceA")
ServiceA implements Service {
public void print() {
System.out.println("printing ServiceA.print()");
}
}

@Service
@Qualifier("ServiceB")
ServiceB implements Service {
public void print() {
System.out.println("printing ServiceB.print()");
}
}

XML:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="file:/etc/config.properties"/>
</bean>

配置属性:

config.properties
service.class=serviceB

最佳答案

这有效。如果您只使用默认的 spring bean 名称,则可以省略服务名称。 serviceA 与 ServiceA 等。

@Controller
class MyController {
@Autowired(required=false)
@Qualifier("Service")
Service service;

public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("app-ctx.xml", MyController.class);
for(String s:context.getBeanDefinitionNames()){
System.out.println(s);
for(String t:context.getAliases(s)){
System.out.println("\t" + t);
}
}
context.getBean(MyController.class).service.print();
}
}

public interface Service {
void print();
}

@Service(value="ServiceA")
public class ServiceA implements example.Service {
public void print() {
System.out.println("printing ServiceA.print()");
}
}

@Service(value="ServiceB")
public class ServiceB implements example.Service {
public void print() {
System.out.println("printing ServiceB.print()");
}
}

XML:

<beans>
<alias name="${service.class}" alias="Service"/>
<context:property-placeholder location="example/app.properties"/>
<context:component-scan base-package="example"/>
<beans>

Prop :

service.class=ServiceB

关于java - Spring 限定符和属性占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61055340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com