Spring 引导 - 接口和实现

Spring Boot - interfaces and implementations

Java/Spring 这里是新手。我有一个关于通过 SpringBoot.

自动布线的问题

我有一个接口、一个实现、一个主要 class 和一个配置 class,如下所示:

ServiceInterface.java

public interface ServiceInterface {
    static String serviceName = "service";
    public void displayMessage();
    public String getServiceName(); 
}

ServiceImpl1.java

public class ServiceImpl1 implements ServiceInterface{
    static String serviceName = "default service value ";

    public String getServiceName() {
        return serviceName;
    }

@Override
public void displayMessage()
    {
        System.out.println("This is implementation 1");
    }
}

主要 class :

@SpringBootApplication
public class App implements CommandLineRunner{

@Autowired
private ServiceInterface serviceInterface;

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

}

@Override
public void run(String... args) {
    serviceInterface.displayMessage();
    System.out.println(serviceInterface.getServiceName());
    System.out.println(serviceInterface.serviceName );
}
}

AppConfig.java

@Configuration
public class AppConfig {

@Bean
ServiceInterface serviceInterface()
{
    return new ServiceImpl1();
}
}

当我 运行 代码时,我得到这个作为输出

This is implementation 1
service 1 
default service value

为什么无法通过 Spring 通过自动装配创建的对象访问 ServiceImpl1 实现中的变量 'serviceName'?

没关系..我只是想通了 variables declared inside an interface are static and final.