[英]why is autowire setter value not set?
我有一堂这样的课
public class ServiceImpl {
private boolean required = false;
public ServiceImpl (Log log) {
this.db = Registry.getDatabase(this);
this.log = log;
rt = new Table(log, db);
it = new ItemTable(log, db, rt);
gt = new GroupTable(log, db);
}
public ServiceImpl () {
this.db = Registry.getDatabase(this);
log = Registry.getLog(this);
rt = new Table(log, db);
it = new ItemTable(log, db, rt);
gt = new GroupTable(log, db);
}
public void trySomething(Collection someList, int value) {
for(int i=0; true; i++){
try{
doSomething(someList,value);
return;
} catch (..) {
...
}
}
}
public void doSomething(Collection someList, int someValue) {
...
//sysout(required) - prints false (expected to be true...)
if(!required) {
execute A
} else {
execute B
}
...
}
public setRequired(boolean required){
this.required = required
//sysout(required) - prints true
}
二级(上一级)
abstract class Synch {
...
private ServiceImpl service;
protected synch(Log log, ServiceImpl service, Keys key) {
this.log = log;
this.key = key;
this.service = service;
}
....
void execute(){
try{
service.trySomething(someList,someValue);
}..
protected abstract void service() throws LockException(){
return service;
}
....
对于我的 xml
...
<bean id="service" class="com.ort.ets.ServiceImpl">
<property name="required" value="true" />
</bean>
...
很抱歉问一些事情是否很明显,但我已经坚持了几个小时。 有人可以告诉我为什么当我期望它是真的时要求是假的吗?
编辑:构造函数和方法调用层次结构
编辑:系统输出结果:
真的
错误的
在您的班级中进行以下更改
public class ServiceImpl {
private Boolean required = false;
public void doSomething(Collection someList, int someValue) {
...
//sysout(required) - prints false (expected to be true...)
if(!required) {
execute A
} else {
execute B
}
...
}
public void setRequired(Boolean required){
this.required = required
//sysout(required) - prints true
}
}
同样在 xml 文件中进行以下更改
<bean id="service" class="com.ort.ets.ServiceImpl">
<property name="required" value="true" />
</bean>
应该
<bean id="service" class="com.ort.ets.ServiceImpl">
<property name="required">
<value type="java.lang.Boolean">true</value>
</property>
</bean>
boolean
必须替换为对象类型类( java.lang.Boolean
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.