我的春季启动应用程序中目前只有两个类。首先是主要的主要Boot Application类,另一个是服务类。我在Application类中声明了属性源文件,如下所示:

@SpringBootApplication
@PropertySource("classpath:ftp.properties")
public class Application
{

    public static void main(String[] args) throws JSchException, SftpException, IOException
    {
        SpringApplication.run(Application.class, args);
        FTPService ftpservice = new FTPService();
        ftpservice.ftp();
    }

}


其他类是FTPService,其中使用@Value注入属性值,如下所示:

public class FTPService
{
    @Value("${vendor1.server}")
    private String VENDOR1_SERVER;

    public boolean ftp() throws JSchException, SftpException, IOException
    {
        boolean success = false;
        System.out.println("vendor1.server : " + VENDOR1_SERVER);
        return success;
    }
}


它输出null。尝试使用以下注释对FTPService进行注释,但没有成功。
尝试将属性复制到application.properties,但是没有用。

@Configuration
@PropertySource("classpath:ftp.properties")


我的属性文件位于src / main / resources下。其名称为ftp.properties,内容如下:

vendor1.server = server.com


我的是gradle应用程序,具有以下配置:

plugins {
id 'org.springframework.boot' version '1.5.6.RELEASE'
id 'java'
}

group = groupName

sourceCompatibility = javaVersion
targetCompatibility = javaVersion

compileJava.options.encoding = 'UTF-8'

repositories {
    mavenCentral()
}

configurations.all {
    exclude group: 'commons-logging', module: 'commons-logging'
    exclude group: 'log4j', module: 'log4j'
    exclude group: 'org.slf4j', module: 'slf4j-jdk14'
    exclude group: 'org.slf4j', module: 'slf4j-log4j12'
}

configurations {
    all*.exclude module : 'spring-boot-starter-logging'
}

dependencies {

    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: bootVersion
    compile group: 'com.jcraft', name: 'jsch', version: jschVersion

    compile group: 'javax.servlet', name: 'javax.servlet-api', version: servletVersion
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: jacksonVersion
    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: log4jVersion
    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: log4jVersion
    compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: log4jVersion
    compile group: 'org.slf4j', name: 'slf4j-api', version: slf4jVersion
    compile group: 'org.slf4j', name: 'jcl-over-slf4j', version: slf4jVersion
    compile group: 'org.slf4j', name: 'log4j-over-slf4j', version: slf4jVersion
    compile group: 'org.slf4j', name: 'jul-to-slf4j', version: slf4jVersion

    testCompile group: 'junit', name: 'junit', version: junitVersion
}


我是否缺少指定属性文件的任何注释或正确方法?

最佳答案

属性注入在您的示例中不起作用,因为您使用new关键字手动创建了对象。属性注入仅在Spring容器管理的对象中起作用。

@Service注释FTPService类,然后将该bean注入到您想执行ftp()方法的某个位置。在这种情况下,main方法不起作用。

10-07 13:13
查看更多