【发布时间】:2019-11-02 10:59:13
【问题描述】:
我有以下课程。
public interface Operation
public abstract class AbstractOperation implements Operation
public class Operation extends AbstractOperation
类操作
public interface Operation {
GenericClientResponse validateCustomerId();
类抽象操作
public abstract class AbstractOperation implements Operation {
protected GenericClientRequest buildClientValidationRequest() {
return new GenericClientRequest();
}
在 Operation 类中有自动装配的属性。
public class Operation extends AbstractOperation {
@Autowired
UserAccountsRepository userAccountsRepository; // not autowiring
@Autowired
WebClient.Builder webClientBuilder; // not autowiring
但是这些属性都不是自动装配的。它们在运行时为空。 但是如果我在我的服务类中自动装配这些,自动装配就成功了。
@Service
@Transactional
public class TransactionServiceImpl implements TransactionService {
@Autowired
UserAccountsRepository userAccountsRepository; // Autowires successfully.
请在下面找到存储库类。
public interface UserAccountsRepository extends
JpaRepository<UserAccountsEntity, Integer> {
@Query("SELECT account FROM UserAccountsEntity account where
account.accountNo = :acc")
UserAccountsEntity getAccountByAccNo(@Param("acc") String userId);
在我的代码中,我保留了一个操作类的映射,并根据一个键获取相关的操作类。
operationMap.put("test_op1", new Operation());
operationMap.put("test_op2", new Operation2());
然后我调用它以获得正确的操作
Optional.ofNullable(operationMap.get("test_op1"));
现在我不明白创建新实例会导致空自动装配。如何在没有新关键字的情况下获得新对象?
【问题讨论】:
-
您能否在您的代码中添加一些细节: 1. 您展示的所有类和
main引导类的包。 2. 课堂注解Operation. -
你能展示你如何实例化
Operation吗? -
请参考我更新的问题@priyank-sriv
-
请参考我更新的问题@HasanCanSaral
-
在您的更新@bynu022 中没有回答我的问题。
标签: java spring spring-boot abstract-class autowired