Java Springboot同样的注释调用。变量成员值为0
My Dependency injection@repository使用@autowired为0值Java Springboot同样的注释调用。变量成员值为0,java,spring-boot,dependency-injection,Java,Spring Boot,Dependency Injection,My Dependency injection@repository使用@autowired为0值 @Repository public class AbsensiRepo{ public double jarakStandardMasukDanPulang = 4.5; } @Repository public class RekapKehadiranRepo { @Autowired AbsensiRepo absensiRepo; public double ShowOtherDIV
@Repository
public class AbsensiRepo{
public double jarakStandardMasukDanPulang = 4.5;
}
@Repository
public class RekapKehadiranRepo {
@Autowired
AbsensiRepo absensiRepo;
public double ShowOtherDIVariable(){
double test = 1*absensiRepo.jarakStandardMasukDanPulang;
return test;
}
}
当我运行ShowOtherDIVariable()时
结果为0;变量absensiRepo.jarakStandardMasukdanPullang的值为0
为什么呢?我叫它的时候,AbsensiRepo课上的JarakStandardMasukdanPullang还没有完成吗
如何解决它,使absensiRepo.jarakStandardMasukdanPullang值与原始值一样为4.5?问题在于@Repository注释。您需要做的就是让Spring为这两个类创建bean。将注释从
@Repository
更改为@Configuration
将有效
@配置
公开课考试{
@自动连线
试验2:ABSSENSIREPO;
公共双显示其他变量(){
双重测试=1*absensiRepo.JarakStandardMasukdanPullang;
回归试验;
}
}
如何调用ShowOtherDIVariable
以及如何获取实例?您的类路径扫描是否提取了所有存储库?请注意,字段注入是无效的。不是答案,但这可能已经将您推向了正确的方向。如果可以使用@Configuration
,为什么要使用@Repository注释?不,将执行字段初始值设定项,而不管调用哪个构造函数。不管它是自动生成的无参数构造函数还是自定义构造函数。始终执行字段初始值设定项。试试看:class A{public int x=42;public static void main(String args[]){System.out.println(new A().x);}}}
你说得对。问题在于@Repository注释。将其更改为@Configuration
修复了该问题。@knittl Halo knittl。马拉地溶液似乎对我的病例有效。既然我是新来的spring boot,你有更有效的解决方案来解决我的问题吗?