まず、次のように Spring Boot プロジェクトを作成し、MyBatis などを導入します。 「MyBatis ドライバーと MySQL ドライバーを見て、簡単なテスト ケースを作成する」を選択します。
最初にデータベースに接続します:
spring.datasource.username=root spring.datasource.password=123 spring.datasource.url=jdbc:mysql:///test05?serverTimezone=Asia/ShanghaiUser エンティティ クラスを作成し、次のように単純なクエリ ケースを作成します:
public class User {
private Integer id;
private String username;
private String address;
private String password;
private String email;
//省略 getter/setter
}
@Mapper
public interface UserMapper {
List<User> getUserByUsername(String username);
}
@Service
public class UserService {
@Autowired
UserMapper userMapper;
public List<User> getUserByUsername(String username){
return userMapper.getUserByUsername(username);
}
}
@RestController
public class UserController {
@Autowired
UserService userService;
@GetMapping("/user")
public List<User> getUser(String username) {
return userService.getUserByUsername(username);
}
}
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.javaboy.druid_monitor.mapper.UserMapper">
<select id="getUserByUsername" resultType="org.javaboy.druid_monitor.model.User">
select * from user where username=#{username}
</select>
</mapper>
非常に単純なテストであり、言うことはありません。
この環境は自由に構築できます。すでに永続化のケースがある場合は、2 番目のセクションに進んで Druid を紹介してください。 このプロジェクトで使用されるデフォルトのデータベース接続プールは、Spring Boot のデフォルトのデータベース接続プールである HikariDataSource です。実際、これは悪くありません。
2. Druid の紹介
次に Druid を紹介します:
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency>注:
次に、application.properties で WebStatFilter を構成します。WebStatFilter は、Web-jdbc 関連の監視データを収集するために使用されます:
# 启用 WebStatFilter spring.datasource.druid.web-stat-filter.enabled=true # 配置拦截规则 spring.datasource.druid.web-stat-filter.url-pattern=/* # 排除一些不必要的 url,这些 URL 不会涉及到 SQL 查询 spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* # 开启 session 统计功能 spring.datasource.druid.web-stat-filter.session-stat-enable=true # 缺省 sessionStatMaxCount 是 1000 个,我们可以按需要进行配置 spring.datasource.druid.web-stat-filter.session-stat-max-count=1000 # 配置 principalSessionName,使得 druid 能够知道当前的 session 的用户是谁 # 根据需要,这个参数的值是 user 信息保存在 session 中的 sessionName #spring.datasource.druid.web-stat-filter.principal-session-name= # 下面这个配置的作用和上面配置的作用类似,这个是通过 Cookie 来识别用户 #spring.datasource.druid.web-stat-filter.principal-cookie-name= # 开启 profile 后就能够监控单个 URL 地址调用列表 #spring.datasource.druid.web-stat-filter.profile-enable=
最初の 5 つだけを構成する必要がありますが、最後の 3 つは必要ありません構成、各構成の意味は、Songe によるコードにリストされています。
次に、次のように StatViewServlet の構成を開きます。# 启用内置的监控页面 spring.datasource.druid.stat-view-servlet.enabled=true # 内置监控页面的地址 spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* # 开启 Reset All 功能 spring.datasource.druid.stat-view-servlet.reset-enable=true # 设置登录用户名 spring.datasource.druid.stat-view-servlet.login-username=javaboy # 设置登录密码 spring.datasource.druid.stat-view-servlet.login-password=123 # 白名单(如果allow没有配置或者为空,则允许所有访问) spring.datasource.druid.stat-view-servlet.allow=127.0.0.1 # 黑名单(deny 优先于 allow,如果在 deny 列表中,就算在 allow 列表中,也会被拒绝) spring.datasource.druid.stat-view-servlet.deny=
ページ アドレスを構成し、ブラック リストとホワイト リストを構成します。
なお、reset-enable 属性を false に設定してもリセットボタンが表示され、ボタンをクリックしただけではリセットされません。
わかりました、以上です。
3. テストさて、次にテスト用の Spring Boot プロジェクトを開始します。
Spring Boot プロジェクトが正常に開始されたら、まず次のアドレスにアクセスします: http://localhost:8080/druid/login.html
この時点で、ログイン認証ページ、次のように:先ほど設定したユーザー名/パスワード (javaboy/123) を入力してログインします。ログインに成功すると、次のページ:
タイトルバーからわかるように、データソース、SQL監視、SQLファイアウォールなどの機能がすべて利用可能です。 次に、http://localhost:8080/user?username=aaa アドレスにアクセスして SQL を実行します。実行が完了したら、SQL 監視を確認します。
ご覧のとおり、現時点では SQL 実行の監視記録が存在します。 他の監視データも見られるので、いちいち記載しません。ここに表示されているデータが直感的ではないと感じ、独自の HTML ページを描画したい場合は、最後にある JSON API をクリックすると、各監視項目の JSON アドレスが表示されます。 JSON を使用して表示します。
4. 広告に移動
この監視ページを直接使用したい場合は、以下に示すように、Alibaba の広告が表示されます。企業がそれを使用している場合は、特に厄介です。 ##この広告を削除することもできますが、これは簡単です。 まず、分析の結果、広告はdruid-1.2.8.jar!/support/http/resources/ にある common.js というファイルから構成されていることがわかりました。 js/ common.js
ここで、common.js ファイルには次の行が含まれています:init : function() { this.buildFooter(); druid.lang.init(); }, buildFooter : function() { var html =''; $(document.body).append(html); },ロジックはおそらく上記のとおりで、buildFooter メソッドはページの最後に広告を構築する役割を果たします。 buildFooter メソッドの呼び出しは init メソッド内で完了します。
広告を削除したい場合は、buildFooter メソッドを呼び出さないでください。
したがって、広告を削除するという私たちのアイデアも非常にシンプルです。フィルターを作成し、common.js へのリクエストをインターセプトし、次のように少し変更を加えます: <pre class="brush:java;">@WebFilter(urlPatterns = "/druid/js/common.js")
public class RemoveAdFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
String text = Utils.readFromResource("support/http/resources/js/common.js");
text = text.replace("this.buildFooter();", "");
servletResponse.getWriter().write(text);
}
}</pre>
As youご覧のとおり、このフィルターは
リクエストをインターセプトします。インターセプトした後、ファイル内の common.js ファイルを自分で読み取って、手動で
this を置き換えます。 .buildFooter();この文だけで十分なので、最後にファイルを書き出すだけです。
もちろん、次のようにスタートアップ クラスで Filter をスキャンすることを忘れないでください:<pre class="brush:java;">@SpringBootApplication
@ServletComponentScan("org.javaboy.druid_monitor.filter")
public class DruidMonitorApplication {
public static void main(String[] args) {
SpringApplication.run(DruidMonitorApplication.class, args);
}
}</pre>
以上がSpring Boot を使用して SQL の実行ステータスを監視する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。