调试 Spring 配置
我正在开发一个使用 Spring 和 Hibernate 并在 Websphere 上运行的 Java 应用程序。 我遇到了一个问题,我希望 Spring 将 Dao 加载到我的对象中,但由于某种原因这没有发生。 (以大致相同的方式指定的另一个 Dao 加载得很好。)
问题是 - 我如何调试 Spring 如何决定加载什么? 我可以为 Spring 打开日志记录吗?在哪里?
I am working on a Java application that uses Spring and Hibernate and runs on a Websphere.
I have run into a problem, where I expect Spring to load a Dao into my object, but for some reason that doesn't happen. (Another Dao that is specified in much the same way is loaded fine.)
The question is - how can I debug how Spring decides what to load in?
Can I turn on logging for Spring, and where?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,Spring框架日志记录非常详细,您在帖子中没有提到您是否已经在使用日志框架。如果您使用的是 log4j,那么只需将 spring 附加程序添加到 log4j 配置(即 log4j.xml 或 log4j.properties),如果您使用的是 log4j xml 配置,您可以执行类似的操作
,或者
我建议您在中测试此问题使用 JUnit 测试进行隔离,您可以使用 spring 测试模块< /a> 与 Junit 结合使用。如果您使用 spring 测试模块,它将为您完成大部分工作,它会根据您的上下文配置加载上下文文件并启动容器,以便您可以专注于测试业务逻辑。我在这里有一个小例子,
更新
我不建议您更改加载日志记录的方式,而是在您的开发环境中尝试此操作,将此代码段添加到您的 web.xml 文件
更新 log4j 配置文件
我对此进行了测试在我的本地 tomcat 上,它在应用程序启动时生成了大量日志记录。我还想进行更正:使用 debug 而不是 @Rayan Stewart 提到的 info 。
Yes, Spring framework logging is very detailed, You did not mention in your post, if you are already using a logging framework or not. If you are using log4j then just add spring appenders to the log4j config (i.e to log4j.xml or log4j.properties), If you are using log4j xml config you can do some thing like this
or
I would advise you to test this problem in isolation using JUnit test, You can do this by using spring testing module in conjunction with Junit. If you use spring test module it will do the bulk of the work for you it loads context file based on your context config and starts container so you can just focus on testing your business logic. I have a small example here
UPDATE
I am not advising you to change the way you load logging but try this in your dev environment, Add this snippet to your web.xml file
UPDATE log4j config file
I tested this on my local tomcat and it generated a lot of logging on application start up. I also want to make a correction: use debug not info as @Rayan Stewart mentioned.
如果您使用 Spring Boot,您还可以通过使用 --debug 标志启动应用程序来启用“调试”模式。
您还可以在 application.properties 中指定 debug=true。
启用调试模式后,将配置一系列核心记录器(嵌入式容器、Hibernate 和 Spring Boot)来输出更多信息。启用调试模式不会将您的应用程序配置为记录具有 DEBUG 级别的所有消息。
或者,您可以通过使用 --trace 标志(或 application.properties 中的trace=true)启动应用程序来启用“跟踪”模式。这样做可以为选定的核心记录器(嵌入式容器、Hibernate 模式生成和整个 Spring 产品组合)启用跟踪日志记录。
https://docs.spring.io /spring-boot/docs/current/reference/html/boot-features-logging.html
If you use Spring Boot, you can also enable a “debug” mode by starting your application with a --debug flag.
You can also specify debug=true in your application.properties.
When the debug mode is enabled, a selection of core loggers (embedded container, Hibernate, and Spring Boot) are configured to output more information. Enabling the debug mode does not configure your application to log all messages with DEBUG level.
Alternatively, you can enable a “trace” mode by starting your application with a --trace flag (or trace=true in your application.properties). Doing so enables trace logging for a selection of core loggers (embedded container, Hibernate schema generation, and the whole Spring portfolio).
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html