春季启动 - 接口和实现



java/spring newbie在这里。我有一个关于通过Springboot自动接线的问题。

我有一个接口,一个实现,一个主类和类似的配置类:

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");
    }
}

主类:

@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"?

没关系..我只是想出界面内声明的变量是静态的,最终是最终的。

最新更新