Spring单元测试:
Maven项目有单独的测试分支目录src/test/java
依赖版本:
方案一:Spring单元测试整合Junit单元测试
单元测试:(依赖版本需要调高4.12) 需在测试目录:src/test/java
在类上加入的注解:
@RunWith(SpringJUnit4ClassRunner.class)//支持 SPring自带的单元测试
@ContextConfiguration("classpath:applicationContext.xml")//加载配置文件
4.11不可以必须4.12以上
如下所示: 在类的最上面加入注解,并且在相应的方法加入@Test 注意两个箭头
方案二:不使用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 如下所示:
开启了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>
第二步:连接池配置打开防火墙和状态监控。
第三步:开发Servlet访问DAO
加入依赖:
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();
正常框架整合,容器初始加载配置,一直使用,也是不关闭的。
第四步:
部署测试
测试验证监控:
访问路径没有项目名:
访问后台:
访问Servlet :
再次刷新后台,观察输出: