zoukankan      html  css  js  c++  java
  • Spring Boot----整合jdbc和整合Durid数据源

    一、整合JDBC

    1、基本操作

    1.1 创建项目

    1.2 配置参数(application.properties)

    spring.datasource.username=root
    spring.datasource.password=123456
    spring.datasource.url=jdbc:mysql://localhost:3306/javas1?serverTimezone=UTC
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    

    1.3 测试

        @Autowired
        DataSource dataSource;
        @Test
        public void test1() throws SQLException {
            System.out.println(dataSource.getClass());
            System.out.println(dataSource.getConnection());
        }

    2、操作数据库(使用JdbcTemplate)

        @Autowired
        JdbcTemplate jdbcTemplate;
        @Test
        public void test2(){
            List<User> query = jdbcTemplate.query("select * from t_user", BeanPropertyRowMapper.newInstance(User.class));
            System.out.println(query);
        }
    

      

    二、整合Druid

    版本:http://central.maven.org/maven2/com/alibaba/druid/

    <dependency>
    		<groupId>com.alibaba</groupId>
    		<artifactId>druid</artifactId>
    		<version>${druid-version}</version>
    </dependency>

    1、配置Druid数据源

    配置apllication.yml

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        password: 123456
        type: com.alibaba.druid.pool.DruidDataSource
        url: jdbc:mysql://localhost:3306/javas1?serverTimezone=UTC
        username: root
    
        initialSize: 5
        minIdle: 5
        maxActive: 20
        maxWait: 60000
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: SELECT * FROM t_user where id=1;
        testwhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        poolPreparedStatements: true
        #配置监控统计拦截的filters,去掉后监控界面sql无法统计,‘wall'用于防火墙
        filters: stat,wall,logback
        maxPoolPreparedStatementPerConnectionSize: 20
        useGlobalDataSourceStat: true
        connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
        #schema:
          #-classpath:department.sql  表示程序启动后执行resources目录下department.sql脚本(自己写脚本),一般为了创建数据表,或者导入数据等(创建完毕后,记得注释掉,不然每次启动都会重新执行)

    配置类(注入上面的配置)

    @Configuration
    public class DruidConfig {
        @ConfigurationProperties(prefix = "spring.datasource")
        @Bean
        public DruidDataSource druidDataSource(){
            DruidDataSource druidDataSource = new DruidDataSource();
            return druidDataSource;
        }
    }

    2、配置Druid监控

    在DruidConfig配置类中添加 servlet 和 fillter

    @Configuration
    public class DruidConfig {
        //配置数据源
        @ConfigurationProperties(prefix = "spring.datasource")
        @Bean
        public DruidDataSource druidDataSource(){
            DruidDataSource druidDataSource = new DruidDataSource();
            return druidDataSource;
        }
    
        //配置管理后台的Servlet
        @Bean
        public ServletRegistrationBean servletRegistrationBean(){
            ServletRegistrationBean<Servlet> servletServletRegistrationBean = new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");
            HashMap<String, String> initParameter = new HashMap<String, String>();
            //具体参数可以查看StatViewServlet(以及它的父类)
            initParameter.put("loginUsername","root");
            initParameter.put("loginPassword","123456");
    
            initParameter.put("allow","192.168.1.101"); //不写默认允许所有人访问
            //initParameter.put("deny","192.168.x.x");
    
            servletServletRegistrationBean.setInitParameters(initParameter);
            return servletServletRegistrationBean;
        }
    
        //配置一个web监控的filter
        @Bean
        public FilterRegistrationBean webStatFilter(){
            FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>();
            bean.setFilter(new WebStatFilter());
            HashMap<String, String> initParameter = new HashMap<>();
            initParameter.put("exclusions","*.js,*.css,/druid/*");
            bean.setInitParameters(initParameter);
            bean.setUrlPatterns(Arrays.asList("/*"));
            return bean;
        }
    }
    

    配置一个web监控的filter可以对web应用,url,session产生监控(如图)

    使用Druid和SpringBoot整合包

    <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
    </dependency>

    application.yml (省略了上面的所有的配置)

    spring:
      application:
        name: provider
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        password: 123456
        type: com.alibaba.druid.pool.DruidDataSource
        url: jdbc:mysql://localhost:3306/javas1?serverTimezone=UTC
        username: root
        druid:
          # 初始化大小,最小,最大
          initial-size: 5
          min-idle: 5
          maxActive: 20
          # 配置获取连接等待超时的时间
          maxWait: 60000
          # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
          timeBetweenEvictionRunsMillis: 60000
          # 配置一个连接在池中最小生存的时间,单位是毫秒
          minEvictableIdleTimeMillis: 300000
          validationQuery: SELECT 1 FROM DUAL
          testWhileIdle: true
          testOnBorrow: false
          testOnReturn: false
          # 打开PSCache,并且指定每个连接上PSCache的大小
          poolPreparedStatements: true
          maxPoolPreparedStatementPerConnectionSize: 20
          # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
          filters: stat,wall,log4j
          # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
          connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
          # 配置DruidStatFilter
          web-stat-filter:
            enabled: true
            url-pattern: "/*"
            exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
          # 配置DruidStatViewServlet
          stat-view-servlet:
            url-pattern: "/druid/*"
            # IP白名单(没有配置或者为空,则允许所有访问)
            allow: 127.0.0.1
            # IP黑名单 (存在共同时,deny优先于allow)
            deny: 192.168.1.73
            #  禁用HTML页面上的“Reset All”功能
            reset-enable: false
            # 登录名
            login-username: admin
            # 登录密码
            login-password: 123456
    

      

  • 相关阅读:
    南阳理工ACM(题目56)
    南阳理工ACM(题目56)
    南阳理工ACM(题目56)
    csuoj1009
    素数槽csuoj
    简单动态规划问题分析
    sort函数使用的基本知识
    2014年7月19日——比赛题取石头问题1
    CODEVS——T 1269 匈牙利游戏 2012年CCC加拿大高中生信息学奥赛
    洛谷—— P1640 [SCOI2010]连续攻击游戏
  • 原文地址:https://www.cnblogs.com/yanxiaoge/p/11370621.html
Copyright © 2011-2022 走看看