pab*_*blo 7 java spring spring-boot
我需要向某些类实现的接口添加默认方法,但我的 IDE 抱怨 ( bean may not have been initialized)。代码将是这样的:
public interface IValidator {
MyValidationBean beanToBeAutowired;
...
default Boolean doSomeNewValidations(){
return beanToBeAutowired.doSomeNewValidations();
}
}
Run Code Online (Sandbox Code Playgroud)
是不允许自动装配到接口还是代码有问题?使用@Component界面上没有任何区别。
我宁愿保留这种设计而不是使用抽象类。
我可以想到如下解决方案 -
public interface IValidator {
public Service getBeanToBeAutowired();
default Boolean doSomeNewValidations(){
return getBeanToBeAutowired().doSomeNewValidations();
}
}
public class ValidatorClass implements IValidator {
@Autowire private Service service;
@Override
public Service getBeanToBeAutowired() {
return service;
}
}
Run Code Online (Sandbox Code Playgroud)
在 Java 中添加变量到接口中是不可能的。默认情况下它是一个public static final常量。因此,您必须执行以下操作之一:
MyValidationBean beanToBeAutowired = new MyValidationBeanImpl();
Run Code Online (Sandbox Code Playgroud)
或以下内容:
MyValidationBean beanToBeAutowired();
default Boolean doSomeNewValidations(){
return beanToBeAutowired().doSomeNewValidations();
}
Run Code Online (Sandbox Code Playgroud)
并且可以重写beanToBeAutowired实现类中的方法。
| 归档时间: |
|
| 查看次数: |
6152 次 |
| 最近记录: |