Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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@Value不能工作_Java_Spring - Fatal编程技术网

Java spring@Value不能工作

Java spring@Value不能工作,java,spring,Java,Spring,我曾经spring@value要从配置中获取值,它在其他类(控制器和其他服务)中工作正常,但在模型中不工作: import org.springframework.beans.factory.annotation.Value; 在上述情况下,无法从Spring.value获取defaultUrl。有人知道为什么吗?我的猜测是:这段代码的问题在于它试图在类的私有成员上设置一个值。尝试添加此成员的setter方法 差不多 public final class Page { @Value("${

我曾经spring@value要从配置中获取值,它在其他类(控制器和其他服务)中工作正常,但在模型中不工作:

import org.springframework.beans.factory.annotation.Value;

在上述情况下,无法从Spring.value获取defaultUrl。有人知道为什么吗?

我的猜测是:这段代码的问题在于它试图在类的私有成员上设置一个值。尝试添加此成员的setter方法

差不多

public final class Page {
  @Value("${defaultUrl}")
  private static String defaultUrl; 

  private String url;

  public Page(String url) {
    this.url = url;
  }
  public Page() {
    this(defaultUrl);
  }
}
看看这里
正如达夫莫在评论中所说,使用
new
意味着Spring没有管理您的新对象。所以春天不会给它注入任何东西。您需要将对象设置为Spring管理的组件以注入某些内容

考虑创建某种
PageFactory
组件,在其上添加
@component
注释,然后使用它来创建页面。通过这种方式,您可以将所需的内容注入工厂,并在页面创建过程中使用它来执行任何您喜欢的操作

@Value("#{systemProperties.databaseName}")
public void setDatabaseName(String dbName) { ... }

@Value("#{strategyBean.databaseKeyGenerator}")
public void setKeyGenerator(KeyGenerator kg) { ... }

有一个高级选项,为了完整起见,我将提到它。您可以在模型类上使用
@Configurable
,将组件注入其中。但是如果您刚刚开始使用框架,我不建议您使用一些半复杂的AOP配置。

您的类必须是Springbean,请参阅AutowiredNotationBeanPostProcessor()

您是否有上下文属性占位符

@Component
public class PageFactory {
    @Value("${defaultUrl}")
    private String defaultUrl;

    public Page create() {
        return new Page(defaultUrl);
    }
}


如何实例化页面?@SleimanJneidi as return new Page();我不认为这有什么关系。调用新的方法不受Spring的控制。这是非此即彼。难怪您的Spring注释不起作用。我将
PropertyPlaceHolderConfigure
放在安全上下文中,以便其他上下文可以很好地使用它
<context:property-placeholder location="classpath:/default.properties"/>