详细一点谢谢,网上找了好多,大多都一样..不能解决我的问题。求大神帮忙解决
不知道是否曲解了楼主的意思。由于一般而言需要配置连接池,因此我使用druid来实现打印SQL。
链接:https://github.com/druid-io/druid
首先推荐 将log4j 换成 logback
如果非得用log4j的话,需要自己完成加载log4j配置文件的功能,因为通常log4j配置的加载都是通过WEB.XML文件进行的。
如何让spring容器加载log4j的配置呢,我们看一下
public abstract class Log4jConfigurer
这是一个抽象类,所以我们需要借助spring的工厂来操作这个Log4jConfigurer,直接给代码吧
public class MytMethodInvokingFactoryBean extends MethodInvokingFactoryBean implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
super.afterPropertiesSet();
Object[] args = getArguments();
for (int i = 0; i < args.length; i++) {
Object obj = args[i];
if (obj instanceof String) {
String arg =obj.toString();
if(arg.startsWith("classpath:")||arg.startsWith("classpath*:")){
arg=arg.split(":")[1];
arg=this.getClass().getClassLoader().getResource(arg).getPath();
args[i]=arg;
}
}
}
setArguments(args);
}
}
spring配置文件添加
<bean id="log4jInitialization"
class="MytMethodInvokingFactoryBean">
<property name="targetClass"
value="org.springframework.util.Log4jConfigurer" />
<property name="targetMethod" value="initLogging" />
<property name="arguments">
<list>
<value>classpath:cfg/log4j.xml</value>
</list>
</property>
</bean>
这样初始化spring容器的时候就会加载log4j的配置了,junit的时候可以通过代码或者注解的方式初始化spring容器,log4j 级别设置成 trace 或者 debug ,下面给出一个junit的基础测试类
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations={"classpath:spring.xml"})
public class BaseTest {
@Autowired
protected ApplicationContext applicationContext;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。