java - 为什么我在 SpringBean 的构造函数中初始化的字段为 null?
问题描述
我不明白以下情况。
我有一个名为 DaoPortals 的 Dao 对象,我用 @Repository 注释进行了注释
@Repository
public class DaoPortals implements IDaoPortals{
private JdbcTemplate jdbcTemplate;
public DaoPortals(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
它拥有一些不重要的功能。我将这个 bean 注入到另一个名为 DaoCustom 的 Dao 对象中。该对象有一个字段,该字段在 ibjects 构造函数中使用 DaoPortals 对象进行了初始化。
@Repository
public class DaoCustom {
private final JdbcTemplate jdbcTemplate;
public final HashMap<Integer, Portal> portals;
public DaoCustom(JdbcTemplate jdbcTemplate, DaoPortals daoPortals){
this.jdbcTemplate = jdbcTemplate;
this.portals = daoPortals.getAll();
}
我们可以看到 DaoCustom 也是一个 spring bean。当我调试构造函数时,我可以清楚地看到 HashMappublic final HashMap<Integer, Portal> portals
使用我期望的值进行了初始化。世界是一个快乐的地方。从这一刻起,我希望这个 spring bean 的字段值是我在构造函数中看到的值....
...只是事实并非如此。
我在任何地方注入门户字段的 DaoCustom Bean null
。例如在这个控制器类中。
@Slf4j
@Service
public class GeneralServices {
private final DaoCustom daoCustom;
public GeneralServices(DaoCustom daoCustom){
this.daoCustom = daoCustom;
}
我没有用new
关键字初始化任何东西。一切都应该由 IoC 容器处理。如果 spring 不能识别DaoCustom
为 bean,我不能将它放在构造函数中并在其他对象中使用它。DaoCustom
inside的字段GeneralServices
不为空。所以它清楚地识别了bean本身......它只是portals
里面的字段值为DaoCustom
null......这个我不明白。有任何想法吗 ??
解决方案
推荐阅读
- python - discord.py:机器人不识别作者
- r - 如何从矩阵中选择行。R
- python - VS 代码中的相对路径不一致
- reactjs - 如何为 React 单页应用程序实现 OAuth2 授权代码授权?
- python - 在 Python 中生成 OAuth2 令牌
- react-bootstrap-typeahead - React-Bootstrap-Typeahead:在将选择设置为框之前捕获时刻(以允许有条件的拒绝)
- python - python 语句“如果值在 [,] 中”
- azure-eventhub - EventProcessorClient 需要从存储帐户获得的最低 SAS 权限是多少?
- javascript - RxJS 条件切换油门
- python - 没有看到包日志 python logger