Java 如何将application.properties中的值分配给@Qualifier

Java 如何将application.properties中的值分配给@Qualifier,java,spring,spring-boot,Java,Spring,Spring Boot,我想分配一个名为@Service from application.properties tu |@Qualifier的值。我试过了,但没用 事实上,我有两个实现相同接口的服务,我想从application.properties更改服务 有人知道怎么做吗 这是我的密码 package com.example.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframewor

我想分配一个名为@Service from application.properties tu |@Qualifier的值。我试过了,但没用

事实上,我有两个实现相同接口的服务,我想从application.properties更改服务

有人知道怎么做吗

这是我的密码

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;



@RestController
public class Controler {


    @Qualifier("${service.name}")
    @Autowired
    private InterfaceTest interfaceTest;


    @GetMapping("/test")
    public String test(){
        return interfaceTest.test();
    }
}

非常感谢您的帮助

我认为您可以使用
环境
应用程序上下文
bean在该控制器的构造函数中实现这一点

只需从字段中删除
Autowired
注释,并通过构造函数接受其他参数即可

public Controller(Environment environment, ApplicationContext applicationContext) {
    String serviceName = environment.getProperty("service.name");
    this.interfaceTest = applicationContext.getBean(serviceName, InterfaceTest.class);
}
据我所知,这些bean限定符和spring的其他注释只是文字以外的注释


希望这能有所帮助。

谢谢你的回答,但我有一个错误
org.springframework.beans.factory.beancreatitionException:创建名为“controler”的bean时出错[C:\Users\MARIAN\Desktop\demo\target\classes\com\example\demo\controler.class]:通过构造函数实例化bean失败我认为您没有从字段中删除@Autowired注释。您可以共享您的代码吗?
@RestController公共类控制器{public controller(环境,应用上下文,应用上下文){String property=Environment.getProperty(“service.name”);ConfigurableBeanFactory ConfigurableBeanFactory=(ConfigurableBeanFactory)applicationContext;this.interfaceTest=applicationContext.getBean(属性,interfaceTest.class);}@Qualifier(${service.name}”)私有interfaceTest interfaceTest;@GetMapping(“/test”)公共字符串test(){return interfaceTest();}
您可以使用这个@RestController公共类控制器{public Controller(环境,应用上下文,应用上下文){String serviceName=Environment.getProperty(“service.name”);this.interfaceTest=ApplicationContext.getBean(serviceName,interfaceTest.class);}私有InterfaceTest InterfaceTest;@GetMapping(“/test”)公共字符串test(){return InterfaceTest.test();}