有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从应用程序中获取值。非Spring类中的属性或yaml文件

我有一个Spring应用程序,我正在使用new操作符为一个类创建一个对象。在类中,我试图从我的application.properties获取值。我用@Service注释了这个类,我正在用new操作符为它创建一个对象。这没什么区别

@Service
public class Myclass {
    @Value("$(myVariable)")
    private String myvariable;
}

类,在该类中我使用new运算符创建上述类的对象

public class AnotherNonSpringClass {
    MyClass myclass = new MyClass();
}

如何从application.properties获取值


共 (1) 个答案

  1. # 1 楼答案

    当您使用new关键字创建对象时,您必须管理对象spring不会维护由new关键字创建的对象

    但仍然有机会通过创建具有新关键字的对象来注入属性,只要您需要提供属性值的服务即可

    public class ValueProvider {
        public String getProperty(String propertyName) throws IOException {
            Properties prop = new Properties();
            prop.load(new FileInputStream(ResourceUtils.getFile("classpath:application.properties")));
            return prop.getProperty(propertyName);
        }
    }
    

    此后

    public class AnotherNonSpringClass {
       MyClass myClass = new MyClass(new ValueProvider().getProperty("myvariable"));
    }
    

    最后

    @Service
    public class MyClass
    {
        @Value("$(myVariable)")
        private String myvariable;
    
        public MyClass() {}
    
        public MyClass(String prop) { 
            this.myVariable = prop; 
        }
    }