美文网首页我爱编程
SpringJunit与Druid-SQL监控

SpringJunit与Druid-SQL监控

作者: 神豪VS勇士赢 | 来源:发表于2018-08-04 22:15 被阅读45次

Spring单元测试:
Maven项目有单独的测试分支目录src/test/java


image.png

依赖版本:


image.png

方案一:Spring单元测试整合Junit单元测试
单元测试:(依赖版本需要调高4.12) 需在测试目录:src/test/java
在类上加入的注解:
@RunWith(SpringJUnit4ClassRunner.class)//支持 SPring自带的单元测试
@ContextConfiguration("classpath:applicationContext.xml")//加载配置文件
4.11不可以必须4.12以上
如下所示: 在类的最上面加入注解,并且在相应的方法加入@Test 注意两个箭头

image.png

方案二:不使用Spring的单元测试,只有Junit的测试
@Test
public void testFind1(){//这就是 Junit的测试
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
YtUserDAO ytUserDAO = (YtUserDAO)context.getBean("ytUserDAO");
//查询所有
List<YtUserPOJO> all = ytUserDAO.findAll();
for (YtUserPOJO ytUserPOJO : all) {
System.out.println(ytUserPOJO.getId()+"\t"+ytUserPOJO.getUsername()+"\t"+ytUserPOJO.getPassword());
}
context.close();
}
这种方式方便易用,不需要改junit的版本。

Druid监控
运用德鲁伊提供的监控。帮助我们提前发现问题。
重点:是对SQL的监控。
SQL监控:每条SQL语句的执行次数,执行时间等指标,找出SQL语句的不足,定位程序的不足。
德鲁伊的后台监控:配置德鲁伊提供的Servlet就可以

配置applicationContext.xml 如下所示:


image.png

开启了druid防火墙,控制后台也能见到SQL防火墙面板
防御统计及SQL的统计信息。

开发流程:
第一步:配置web.xml:

<servlet>
<servlet-name>statViewServlet</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>

<init-param>
<param-name>resetEnable</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>loginUsername</param-name>
<param-value>admin</param-value>
</init-param>
<init-param>
<param-name>loginPassword</param-name>
<param-value>admin</param-value>
</init-param>
</servlet>
<servlet>

<servlet-mapping>
<servlet-name>statViewServlet</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>

第二步:连接池配置打开防火墙和状态监控。


image.png

第三步:开发Servlet访问DAO
加入依赖:


image.png

public class TestDruidServlet extends javax.servlet.http.HttpServlet {
static ClassPathXmlApplicationContext context;

static {

    context = new ClassPathXmlApplicationContext("applicationContext.xml");
}
private UserService userService;


@Override
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
doGet(request,response);
}
@Override
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
    Log.info("进入");
    UserServiceImpl  userServiceImpl = (UserServiceImpl) context.getBean("UserServiceImpl");

    List<User> users = userServiceImpl.queryAll();
    response.getWriter().write(users.toString());
    Log.info(users);
}

}


注意:
测试的时候,不要关闭Spring的容器,否则SQL监控不生效。
//context.close();
正常框架整合,容器初始加载配置,一直使用,也是不关闭的。


第四步:
部署测试
测试验证监控:
访问路径没有项目名:


image.png

访问后台:


image.png
访问Servlet :
image.png
再次刷新后台,观察输出:
image.png

相关文章

网友评论

    本文标题:SpringJunit与Druid-SQL监控

    本文链接:https://www.haomeiwen.com/subject/adcvvftx.html