Я столкнулся с странной проблемой, когда Component
с инжекцией @Autowire
доступен в одном классе, но не в другом.пружина - компонент, автоподъёмный в одном классе, но не в другом
Я использую @Autowired
в атрибуте network
классов Account
и Agreement
, но autowired только в классе Agreement
, но не в Account
. @ComponentScan
управляет тремя необходимыми пакетами.
Вот начало класс:
package com.ser.pm.tests;
@SpringBootApplication
@ComponentScan("com.ser.pm.agreement, com.ser.pm.network, com.ser.pm.address")
public class zt_Agreement {
public static void main(String[] args) throws SignatureException, InterruptedException {
ApplicationContext ctx = SpringApplication.run(zt_Agreement.class, args);
Agreement oagreement = ctx.getBean(Agreement.class);
oagreement.SubmitAgreement();
}
}
Вот Component
Network
, который должен быть введен в Account
->network
слишком
package com.ser.pm.network;
@Component
public class Network implements INetwork {
public X2network xsnetwork;
public Network() { xsnetwork = networkFactory.createnetwork(); }
public boolean isBound() { return (xsnetwork != null); }
public BigInteger getNumber(byte[] addr) { return xsnetwork.getNumber(addr); }
}
В этом классе поле network
не autowired :
package com.ser.pm.address;
@Component
public class Account implements IFSAccount {
@Autowired
Network network;
public Account(String ir_Address, String ir_Name) {}
public Account() {}
public BigInteger getNumber() {
return network.getNumber(Hex.decode(this.getAddress()));
}
}
В этом классе поле network
является autowired правильно
package com.ser.pm.agreement;
@Component
public class Agreement {
protected Account oFSEthAddress;
private Trans oTx;
private AgreementABI oABIs;
@Autowired
Network network;
@Autowired
private ApplicationContext ctx;
public Agreement() {
oFSEthAddress = new Account();
oagreementAccountOil = new FSEthagreementAccount();
}
public Trans JoinAgreement(String iPrivateKey) throws FScx {
FSNetGas oFSEthNetGas = new FSNetGas();
oFSEthAddress.setEtherum(oNetwork.onetwork);
SCTrans oFSTx = new FSTrans();
oFSTx.createCallTrans(_oTxParams);
oFSTx.submit(oNetwork.onetwork);
return oFSTx.getTrans();
}
}
Классы Account
и Agreement
находится в разных пакетах, но оба они сканируются с @ComponentScan
, поэтому я не понимаю, почему у меня есть проблемы с автоматическим связыванием в класс Account
?
Вы создаете новый экземпляр самостоятельно в конструкторе ... Этот экземпляр ISN управляется весной и, как таковая, не получит никаких зависимостей. –