当前位置: 首页 > 知识库问答 >
问题:

Spring没有从某些类的属性文件中注入@Value

葛志国
2023-03-14

在以下Spring Boot应用程序中,@Value注释在WebSecurityConfig类中成功,但在FileSystemUplad类中没有。在FileSystemUplad类中,值(测试)使用与WebSecurityConfig使用的相同属性文件导致null。

应用.java

package com.project;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;

@SpringBootApplication
@PropertySource("${project.properties}")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

WebSecurityConfig.java(其中@Value注入工作正常)

package com.project.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.authentication.configurers.GlobalAuthenticationConfigurerAdapter;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    private static String ldapUser;
    @Value("${ldap.user: user}")
    public void setPrivateLdapUser(String privateName) {
    ldapUser = privateName;
    }  
    ...
}

FileSystemUpload.java(测试没有被注入并且为空)

package com.project.service;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class FileSystemUpload {

    @Value("${testing}")
    String testing;

    ...
}

实用程序.属性测试=thisisatest

共有1个答案

司空凌
2023-03-14

我自己能够回答这个问题。事实证明,FileSystemUpload类就像普通Java对象一样被引用:

FileSystemUpload upload = new FileSystemUpload()

它应该使用Spring注解来引用类(@了的)。一旦我将类的引用转换为@了的,并删除了新FileSystemUplad类的创建,该类中的所有@Value注入都起作用了。

 类似资料:
  • 属性文件如下所示: 根据这一点,我尝试了以下方法: 在另一个组件中,我autowired应用特性:

  • 我有一个运行大型企业应用程序的场景。 我有一个没有@SpringBootApplication的应用程序,叫做XYZ应用程序。应用程序没有在ABC应用程序中自动连接,ABC应用程序有@SpringBootApplication,我在Intellij中运行它。如何确保在运行应用程序时创建bean 注意:我将XYZ应用程序的JAR作为渐变版本。XYZ api和XYZ impl有单独的JAR。 我得到的

  • 问题内容: 从属性文件中为最终属性进行Spring注入的一个简单问题。 我有一个属性文件,要在其中存储文件路径。通常,当我使用属性文件时,我会使用类似以下的方法来设置类属性: 然后在我spring.xml我会像这样: 这很好用,很简单,并且使代码简洁美观。但是我不确定在尝试将属性值注入最终类属性时使用的最整洁的模式是什么? 显然是这样的: 不管用。还有另一种方法吗? 问题答案: 将值注入最终字段的

  • 问题内容: 关于从属性文件中为最终属性进行Spring注入的一个简单问题。 我有一个属性文件,要在其中存储文件路径。通常,当我使用属性文件时,我会使用类似以下的方法来设置类属性: 然后在我spring.xml我会像这样: 这样效果很好,很简单,并且使代码更简洁。但是我不确定在尝试将属性值注入最终类属性时使用的最整洁的模式是什么? 显然是这样的: 不管用。还有另一种方法吗? 问题答案: 如果您正在寻

  • 假设有一个类人 当我创建一个Person类的bean时,我需要一个Person bean具有地址属性,该属性具有value street作为“Baker Lane”。是否可以在Person类中使用autowire来实现这一点或者根本无法实现? 顺便说一下,这是一个面试问题

  • 问题内容: 我在应用程序中使用spring,并且能够将类路径中某些文件的某些属性注入到我的应用程序中,并且一切正常。即 现在我可以在春季环境中使用。在我的主要班级中: 它也可以正常工作,我的问题是,如何在春季环境属性中插入属性文件位置,而不是一开始就没有,我想使我的应用程序可配置。如果我从中执行我的应用程序,或者我假设在应用程序上下文中该值应为或 问题答案: 有时我也遇到类似的问题。我的要求是属性