当前位置: 首页 > 面试题库 >

调试Spring配置

沈英勋
2023-03-14
问题内容

我正在使用Spring和Hibernate并在Websphere上运行的Java应用程序上工作。我遇到了一个问题,我希望Spring将Dao加载到我的对象中,但是由于某种原因却没有发生。(以相同方式指定的另一个Dao可以很好地加载。)

问题是-我该如何调试Spring如何确定要加载的内容?我可以在Spring上打开日志记录吗?在哪里?


问题答案:

是的,Spring框架日志记录非常详细,如果您已经在使用日志框架,则您没有在文章中提及。如果您使用的是log4j,则只需将spring附加程序添加到log4j的配置中(即添加到log4j.xml或log4j.properties),如果您使用的是log4j
xml配置,则可以执行以下操作

<category name="org.springframework.beans">
    <priority value="debug" />
</category>

要么

<category name="org.springframework">
    <priority value="debug" />
</category>

我建议您使用JUnit测试来单独测试此问题,您可以通过将弹簧测试模块与Junit结合使用来进行测试。如果使用spring
test模块,它将为您完成大部分工作,它会根据上下文配置加载上下文文件并启动容器,因此您可以专注于测试业务逻辑。我这里有一个小例子

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:springContext.xml"})
@Transactional
public class SpringDAOTest 
{
    @Autowired
    private SpringDAO dao;

    @Autowired
    private ApplicationContext appContext;

    @Test
    public void checkConfig()
    {
        AnySpringBean bean =  appContext.getBean(AnySpringBean.class);
        Assert.assertNotNull(bean);
    }
}

更新

我不建议您更改加载日志的方式,但请在您的开发环境中尝试此操作,将此代码段添加到您的web.xml文件中

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

UPDATE log4j配置文件

我在本地的tomcat上进行了测试,并在应用程序启动时生成了大量日志。我也想改正:使用 调试 没有 信息 作为@Rayan斯图尔特提及。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Threshold" value="debug" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                value="%d{HH:mm:ss} %p [%t]:%c{3}.%M()%L - %m%n" />
        </layout>
    </appender>

    <appender name="springAppender" class="org.apache.log4j.RollingFileAppender"> 
        <param name="file" value="C:/tomcatLogs/webApp/spring-details.log" /> 
        <param name="append" value="true" /> 
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                value="%d{MM/dd/yyyy HH:mm:ss}  [%t]:%c{5}.%M()%L %m%n" />
        </layout>
    </appender>

    <category name="org.springframework">
        <priority value="debug" />
    </category>

    <category name="org.springframework.beans">
        <priority value="debug" />
    </category>

    <category name="org.springframework.security">
        <priority value="debug" />
    </category>

    <category
        name="org.springframework.beans.CachedIntrospectionResults">
        <priority value="debug" />
    </category>

    <category name="org.springframework.jdbc.core">
        <priority value="debug" />
    </category>

    <category name="org.springframework.transaction.support.TransactionSynchronizationManager">
        <priority value="debug" />
    </category>

    <root>
        <priority value="debug" />
        <appender-ref ref="springAppender" />
        <!-- <appender-ref ref="STDOUT"/>  -->
    </root>
</log4j:configuration>


 类似资料:
  • 我在may Spring应用程序中添加了安全问题,所以我想通过调试Spring。 Log4j正在工作,因为我的服务正在将调试信息记录到控制台。但是Spring没有记录任何东西到我的控制台 这是我的 在我如此放置。结果: 我尝试在我的网站上添加这个。正如在这个问题中所说的xml 我在其他应用程序中使用了此调试,但我真的没有看到原因。。。谢谢你的帮助

  • 请查找下面的代码 IntegrationServiceBean类 我的问题是,如果对integration service bean应用重试,是否会对应用程序的主要部分(例如,在主endpoint保存数据)产生性能影响。 最好的做法是什么

  • 主要内容:Eclipse 创建和使用Debug配置Eclipse 创建和使用Debug配置 Eclipse 调试配置类似于运行配置,但它用于在调试模式下启动应用程序。因为应用程序是在调试模式下启动的,所以会提示用户切换到调试透视图。调试透视图提供了许多适合调试应用程序的视图。 可以通过从“Run”菜单中选择“Debug Configurations”菜单项来调用“Debug Configurations”对话框。 要为 Java 应用程序创建调试

  • 创建和使用调试配置 eclipse调试配置类似于运行配置,但它用于在调试模式下启动应用程序。 由于应用程序在调试模式下启动,因此系统会提示用户切换到调试透视图。 debug透视图提供了许多适用于调试应用程序的视图。 可以通过从“运行”菜单中选择“调试配置”菜单项来调用“调试配置”对话框。 要为Java应用程序创建调试配置, 请从左侧的列表中选择Java Application ,然后单击New按钮

  • 我们以国芯公版8008 UAC1.3.1为例。 一个新的板子做出后,开始进行硬件和软件调试的流程如下: step1: 确认ck串口输出正常 gx8008支持空片烧录,所以内部rom上是有程序一上电就执行的。 通过ck串口会输出默认打印。使用波特率57600查看。 有串口输出,就可以确认cpu正常上电启动了。 step2: 管脚复用配置 在对应板级的 mcu/boards/leo_gx8008_ua

  • 我们以国芯公版8008 UAC1.3.1为例。 一个新的板子做出后,开始进行硬件和软件调试的流程如下: step1: 确认ck串口输出正常 gx8008支持空片烧录,所以内部rom上是有程序一上电就执行的。 通过ck串口会输出默认打印。使用波特率57600查看。 有串口输出,就可以确认cpu正常上电启动了。 step2: 管脚复用配置 在对应板级的 mcu/boards/leo_gx8008_ua