gpt4 book ai didi

java - 为什么未设置 Autowiring setter 值?

转载 作者:行者123 更新时间:2023-12-01 06:11:37 25 4
gpt4 key购买 nike

我有一堂这样的课

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>
...

很抱歉询问某些事情是否显而易见,但我在这个问题上停留了几个小时。有人可以告诉我为什么当我期望它是真的时 required 是假的吗?

编辑:构造函数和方法调用层次结构

编辑:系统输出结果:

正确

最佳答案

在您的类(class)中进行以下更改

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 必须替换为对象类型 class(java.lang.Boolean)

关于java - 为什么未设置 Autowiring setter 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33481992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com