我试图在MessageBoxDAO类中自动连接jdbctemplate(我想它工作得很好),然后我在控制器中创建自动连接的DAO对象来获取最新的ID,以防止获取重复的ID,并从它结束的地方开始。
代码如下:
@Component
public class MessageBoxDAO {
@Autowired
JdbcTemplate jdbcTemplate;
...
public long getLatestID() {
return jdbcTemplate.queryForObject("SELECT id FROM messages ORDER BY id DESC LIMIT 1", Integer.class);
}
}
@RestController
public class MessageBoxController {
@Autowired
MessageBoxDAO dao;
private final AtomicLong counter = new AtomicLong(dao.getLatestID());
...
}
由于我未知的原因,“dao”为空,因此无法构造计数器,程序停止
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.example.CRUD.MessageBoxController]: Constructor threw exception; nested exception is java.lang.NullPointerException: Cannot invoke "com.example.CRUD.MessageBoxDAO.getLatestID()" because "this.dao" is null
我刚接触spring boot,我知道这可能是一个非常简单的问题,但有人能指出我错在哪里吗?
计数器是MessageBoxController的成员变量。Spring使用反射构造MessageBoxController实例。它将在dao的依赖注入之前初始化。更多详细信息可在此处找到:https://stackoverflow.com/a/49443630/6644123
我们可以尝试重写计数器的初始化时间。示例可能类似于以下代码:
@RestController
public class MessageBoxController {
@Autowired
MessageBoxDAO dao;
private final AtomicLong counter = new AtomicLong(0);
@PostConstruct
public void initialize() {
// initialize counter after dependency injection of dao
counter.set(dao.getLatestID());
}
...
}
您面临的问题是由于以下对象的初始化
private final AtomicLong counter = new AtomicLong(dao.getLatestID());
您已经自动连接了MessageBoxDAO依赖项,该依赖项在执行上述指令时未初始化。您应该在实例化过程完成后初始化计数器,或者使用构造注入。
问题内容: 我在将环境连接到Spring项目时遇到问题。在这个班上 环境始终为null。 问题答案: 自动装配发生的时间比所谓的晚(由于某种原因)。 一种解决方法是实现并依赖Spring调用方法:
以下代码在isValid()函数内的teamResource自动连线对象上生成null: 团队资源类: 如果相关的话。。。 到底为什么teamResources是null? 它没有在任何其他地方用new显式初始化。
我在RMI服务中的@autowired对象上收到一个空指针异常。我创建了一个简单的(我认为)服务,可以通过RMI从客户端调用。代码如下 heartbeat-servlet.xml代码如下: 我的指定组件扫描的WebConfiguration文件如下: My HeartbeatImpl.java在包中com.edvs.service所以应该扫描它,并且应该实例化@autowyah HostStatu
我正在使用spring boot创建一个后端应用程序,其用户使用JWT进行身份验证。 当我验证用户的jwt(使用过滤器)时,我将其内容解析为一个名为“身份验证”的对象,其中包含用户的id、名称、角色... 在用用户数据创建这个对象之后,我自动连接它,以便将它用于任何类(服务、控制器…) 大多数时候,我对它没有问题。但有时我发现这个对象包含另一个用户的信息。 我认为每个用户都可以访问包含其信息的对象
我正在努力学习一本书名为《SpringMVC初学者指南》的书,我一直在努力创建存储库对象。我不断地得到一个BeanCreationException。不知道我还错过了什么。我想知道是否有人能帮我解决这个问题。 请在下面找到我的代码。谢谢 BeanCreationException XML文件: ProductCrontroller: 产品存储库: InMemoryProductRepository