繁体   English   中英

Spring 启动 web java 配置不起作用

[英]Spring boot web java configuration not working

I'm just starting off with Spring, I have created a basic Spring boot web app with - Thymeleaf templates, JPA and Mysql.

当我使用自动装配并注释所有类时,一切正常。 这是工作代码的示例。

带有@Component 注释的简单产品 class
带有@Component 注解的简单产品类

带有 @service 注释的简单 DAO class
带有 @service 注释的简单 DAO 类

基本 controller 带有 @Autowired 注释以获取 DAO 实例
带有@Autowired注解的基本控制器来获取DAO实例

因此,当我调用 get 方法时,我可以看到产品列表:显示 2 个产品
2个产品展示

现在,当我转换到 java 配置时,它停止工作。 我注释掉了注释并添加了一个新的 java 配置文件。

@Autowiring 注释也从 Controller 中删除

添加了带有 @Configuration 的 java class,请参阅配置文件:
配置文件

为了确保上下文加载了 bean,我采用了 run 方法返回的可配置上下文并检查了 bean 是否已加载。

获取DAO bean并调用获取Product line items的方法
获取DAO bean并调用获取Product line items的方法

这也有效,因为我可以看到 object 不是 null。 我还可以在应用程序启动后立即获得 output 中的产品数量。

直到这里一切都很好,应用程序已经启动。 但是现在当我访问 URL - 我得到一个错误

总结这个例子只是为了理解 Spring 而不是遵循正确的 DDD 实践。

这是步骤的摘要,问题在步骤 4(b)

  1. DAO 创建 2 个 Product 实例,放入一个列表并返回它。
  2. DAO 被注入到 controller 中。 controller 调用 DAO 上的 getproducts() 并返回产品列表。
  3. 一切都与组件和服务注释结合使用@Autowireing
  4. 当我使用 Java 配置时,问题就来了。 (a) 应用程序启动后,我获取上下文并验证 bean 是否已加载。 (我在主应用程序中执行此操作。) (b) 只有当我点击 url 并且 controller 尝试调用 DAO 上的方法时,我才会遇到问题。

HomeController声明一个构造函数,如下所示

@Controller
public class HomeController{

   private final ProductDao dao;

    public HomeController(ProductDao dao){
       this.dao = dao;
    }
 
  //... rest of the code
}

参考:Spring 引导参考文档 - Spring Beans 和依赖注入

如果一个 bean 有一个构造函数,你可以省略 @Autowired

注意:共享实际代码而不是图像以供参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM