我刚刚开始使用spring,我已经创建了一个基本的spring启动web应用程序,它使用了-thymeleaf模板、jpa和mysql。
当我使用autowiring和注解所有类时,一切都正常。下面是一个工作代码的示例。
带有@component注解的简单产品类
带有@service注解的简单dao类
带有@autowired注解的basic控制器来获取dao示例
所以当我调用get方法时,我可以看到一个产品列表:显示2个产品
现在,当我转换到java配置时,它就停止工作了。我注解掉了注解并添加了一个新的java配置文件。
@autowiring注解也从控制器中删除
添加了带有@configuration的java类,请参阅配置文件:
为了确保上下文加载了bean,我获取了run方法返回的可配置上下文,并检查bean是否已加载。
获取daobean并调用方法来获取产品线项
这同样适用,因为我可以看到对象不是空的。我还可以在应用程序启动后立即获得输出中产品的计数。
一切正常,直到这里和应用程序已经开始。但是现在当我访问这个网址时-我得到了一个错误
这个例子只是为了理解spring,并没有遵循正确的ddd实践。
以下是步骤摘要,问题在步骤4(b)中
dao创建2个产品示例,放入一个列表并返回它。
dao被注入到控制器中。控制器调用dao上的getproducts()并返回产品列表。
一切都与组件和服务注解结合使用@autowiring
当我使用java配置时,问题就来了(a) 在应用程序启动之后,我获取上下文并验证是否加载了bean((b)只有当我点击url并且当控制器试图调用dao上的方法时,我才发现问题。
1条答案
按热度按时间ikfrs5lh1#
声明的构造函数
HomeController
如下参考:springboot参考文档-springbean和依赖注入
如果一个bean有一个构造函数,那么可以省略@autowired
注意:共享实际代码而不是图像以供参考。