Spring Boot整理——spring boot 与常用组件整合


一、项目搭建

        首先创建的Spring Boot工程(war包),然后导入相关依赖:


 
 
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0 </modelVersion>
  4. <parent>
  5. <groupId>org.springframework.boot </groupId>
  6. <artifactId>spring-boot-starter-parent </artifactId>
  7. <version>1.5.2.RELEASE </version>
  8. </parent>
  9. <groupId>com.shen.demo </groupId>
  10. <artifactId>project </artifactId>
  11. <version>1.0.0-SNAPSHOT </version>
  12. <packaging>war </packaging>
  13. <dependencies>
  14. <!-- 单元测试 -->
  15. <dependency>
  16. <groupId>junit </groupId>
  17. <artifactId>junit </artifactId>
  18. <scope>test </scope>
  19. </dependency>
  20. <dependency>
  21. <groupId>org.springframework </groupId>
  22. <artifactId>spring-jdbc </artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework </groupId>
  26. <artifactId>spring-aspects </artifactId>
  27. </dependency>
  28. <dependency>
  29. <groupId>org.springframework.boot </groupId>
  30. <artifactId>spring-boot-starter-web </artifactId>
  31. </dependency>
  32. <dependency>
  33. <groupId>org.springframework.boot </groupId>
  34. <artifactId>spring-boot-starter-jdbc </artifactId>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.springframework.boot </groupId>
  38. <artifactId>spring-boot-starter-tomcat </artifactId>
  39. <scope>provided </scope>
  40. </dependency>
  41. <!-- Mybatis -->
  42. <dependency>
  43. <groupId>org.mybatis </groupId>
  44. <artifactId>mybatis </artifactId>
  45. <version>3.2.8 </version>
  46. </dependency>
  47. <dependency>
  48. <groupId>org.mybatis </groupId>
  49. <artifactId>mybatis-spring </artifactId>
  50. <version>1.2.2 </version>
  51. </dependency>
  52. <!-- 分页助手 -->
  53. <dependency>
  54. <groupId>com.github.pagehelper </groupId>
  55. <artifactId>pagehelper </artifactId>
  56. <version>3.7.5 </version>
  57. </dependency>
  58. <dependency>
  59. <groupId>com.github.jsqlparser </groupId>
  60. <artifactId>jsqlparser </artifactId>
  61. <version>0.9.1 </version>
  62. </dependency>
  63. <!-- 通用Mapper -->
  64. <dependency>
  65. <groupId>com.github.abel533 </groupId>
  66. <artifactId>mapper </artifactId>
  67. <version>2.3.4 </version>
  68. </dependency>
  69. <!-- MySql -->
  70. <dependency>
  71. <groupId>mysql </groupId>
  72. <artifactId>mysql-connector-java </artifactId>
  73. </dependency>
  74. <!-- 连接池 -->
  75. <dependency>
  76. <groupId>com.jolbox </groupId>
  77. <artifactId>bonecp-spring </artifactId>
  78. <version>0.8.0.RELEASE </version>
  79. </dependency>
  80. <!-- httpclient -->
  81. <dependency>
  82. <groupId>org.apache.httpcomponents </groupId>
  83. <artifactId>httpclient </artifactId>
  84. </dependency>
  85. <!-- JSP相关 -->
  86. <dependency>
  87. <groupId>jstl </groupId>
  88. <artifactId>jstl </artifactId>
  89. <version>1.2 </version>
  90. </dependency>
  91. <!-- Apache工具组件 -->
  92. <dependency>
  93. <groupId>org.apache.commons </groupId>
  94. <artifactId>commons-lang3 </artifactId>
  95. <version>3.3.2 </version>
  96. </dependency>
  97. <dependency>
  98. <groupId>org.apache.commons </groupId>
  99. <artifactId>commons-io </artifactId>
  100. <version>1.3.2 </version>
  101. </dependency>
  102. <dependency>
  103. <groupId>commons-codec </groupId>
  104. <artifactId>commons-codec </artifactId>
  105. </dependency>
  106. <dependency>
  107. <groupId>org.springframework.amqp </groupId>
  108. <artifactId>spring-rabbit </artifactId>
  109. <version>1.4.0.RELEASE </version>
  110. </dependency>
  111. <dependency>
  112. <groupId>com.alibaba </groupId>
  113. <artifactId>dubbo </artifactId>
  114. <version>2.5.3 </version>
  115. <exclusions>
  116. <exclusion>
  117. <!-- 排除传递spring依赖 -->
  118. <artifactId>spring </artifactId>
  119. <groupId>org.springframework </groupId>
  120. </exclusion>
  121. </exclusions>
  122. </dependency>
  123. <dependency>
  124. <groupId>org.apache.zookeeper </groupId>
  125. <artifactId>zookeeper </artifactId>
  126. <version>3.3.3 </version>
  127. </dependency>
  128. <dependency>
  129. <groupId>com.github.sgroschupf </groupId>
  130. <artifactId>zkclient </artifactId>
  131. <version>0.1 </version>
  132. </dependency>
  133. <dependency>
  134. <groupId>org.apache.tomcat.embed </groupId>
  135. <artifactId>tomcat-embed-jasper </artifactId>
  136. <scope>provided </scope>
  137. </dependency>
  138. </dependencies>
  139. <build>
  140. <plugins>
  141. <!-- 资源文件拷贝插件 -->
  142. <plugin>
  143. <groupId>org.apache.maven.plugins </groupId>
  144. <artifactId>maven-resources-plugin </artifactId>
  145. <configuration>
  146. <encoding>UTF-8 </encoding>
  147. </configuration>
  148. </plugin>
  149. <!-- java编译插件 -->
  150. <plugin>
  151. <groupId>org.apache.maven.plugins </groupId>
  152. <artifactId>maven-compiler-plugin </artifactId>
  153. <configuration>
  154. <source>1.7 </source>
  155. <target>1.7 </target>
  156. <encoding>UTF-8 </encoding>
  157. </configuration>
  158. </plugin>
  159. <plugin>
  160. <groupId>org.springframework.boot </groupId>
  161. <artifactId>spring-boot-maven-plugin </artifactId>
  162. </plugin>
  163. </plugins>
  164. </build>
  165. </project>

 

二、开始配置

1、编写主配置

        编写Spring配置类ProjectApplication,内容如下:


 
 
  1. @Configuration
  2. @PropertySource(value = { "classpath:jdbc.properties", "classpath:httpclient.properties" })
  3. @ComponentScan(basePackages = "com.shen")
  4. @ImportResource(value = "classpath:dubbo/dubbo-consumer.xml")
  5. @SpringBootApplication
  6. public class ProjectApplication extends SpringBootServletInitializer{
  7.     @Value( "${jdbc.url}")
  8.     private String jdbcUrl;
  9.     @Value( "${jdbc.driverClassName}")
  10.     private String jdbcDriverClassName;
  11.     @Value( "${jdbc.username}")
  12.     private String jdbcUsername;
  13.     @Value( "${jdbc.password}")
  14.     private String jdbcPassword;
  15.     @Bean(destroyMethod = "close")
  16.     public DataSource dataSource() {
  17.        BoneCPDataSource boneCPDataSource = new BoneCPDataSource();
  18.         // 数据库驱动
  19.        boneCPDataSource.setDriverClass(jdbcDriverClassName);
  20.         // 相应驱动的jdbcUrl
  21.        boneCPDataSource.setJdbcUrl(jdbcUrl);
  22.         // 数据库的用户名
  23.        boneCPDataSource.setUsername(jdbcUsername);
  24.         // 数据库的密码
  25.        boneCPDataSource.setPassword(jdbcUsername);
  26.         // 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0
  27.        boneCPDataSource.setIdleConnectionTestPeriodInMinutes( 60);
  28.         // 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0
  29.        boneCPDataSource.setIdleMaxAgeInMinutes( 30);
  30.         // 每个分区最大的连接数
  31.        boneCPDataSource.setMaxConnectionsPerPartition( 100);
  32.         // 每个分区最小的连接数
  33.        boneCPDataSource.setMinConnectionsPerPartition( 5);
  34.         return boneCPDataSource;
  35.   }
  36.     @Override
  37.     protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
  38.         return builder.sources(ProjectApplication.class);
  39.   }
  40. }

上面的代码主要包含如下配置内容:

  • 读取外部的配置文件
  • 设置扫描包
  • 定义数据源

 

附加,上面引入的资源文件如下:

jdbc.properties


 
 
  1. jdbc.driverClassName=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql://127.0.0.1:3306/project?useUnicode= true&characterEncoding=utf8&autoReconnect= true&allowMultiQueries= true
  3. jdbc.username=root
  4. jdbc.password=root

httpclient.properties


 
 
  1. http.defaultMaxPerRoute=100
  2. http.maxTotal=300
  3. http.connectTimeout=1000
  4. http.connectionRequestTimeout=500
  5. http.socketTimeout=10000
  6. http.staleConnectionCheckEnabled= true

2、整合Mybatis

Mybatis和Spring Boot的整合有两种方式:

        第一种:使用mybatis官方提供的Spring Boot整合包实现,地址:https://github.com/mybatis/spring-boot-starter 

        第二种:使用mybatis-spring整合的方式,也就是我们传统的方式。这里我们推荐使用第二种,因为这样我们可以很方便的控制Mybatis的各种配置。首先,创建一个Mybatis的配置类(MyBatisConfig):


 
 
  1. @Configuration
  2. public class MyBatisConfig {
  3.     @Autowired
  4.     private DataSource dataSource;
  5.     @Bean
  6.     @ConditionalOnMissingBean //当容器里没有指定的Bean的情况下创建该对象
  7.     public SqlSessionFactoryBean sqlSessionFactoryBean() {
  8.        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
  9.         // 设置数据源
  10.        sqlSessionFactoryBean.setDataSource(dataSource);
  11.         // 设置mybatis的主配置文件
  12.        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
  13.        Resource mybatisConfigXml = resolver.getResource( "classpath:mybatis/mybatis-config.xml");
  14.        sqlSessionFactoryBean.setConfigLocation(mybatisConfigXml);
  15.         // 设置别名包
  16.        sqlSessionFactoryBean.setTypeAliasesPackage( "com.shen.cart.pojo");
  17.         return sqlSessionFactoryBean;
  18.   }
  19. }

其中注入方式也可以写成参数注入:

public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {}
 
 

然后,创建Mapper接口的扫描类MapperScannerConfig:


 
 
  1. @Configuration
  2. @AutoConfigureAfter(MyBatisConfig.class) //保证在MyBatisConfig实例化之后再实例化该类
  3. public class MapperScannerConfig {
  4.     // mapper接口的扫描器
  5.     @Bean
  6.     public MapperScannerConfigurer mapperScannerConfigurer() {
  7.        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
  8.        mapperScannerConfigurer.setBasePackage( "com.shen.cart.mapper");
  9.         return mapperScannerConfigurer;
  10.   }
  11. }

3、设置事务管理

        在Spring Boot中推荐使用@Transactional注解来申明事务。首先需要导入依赖:


 
 
  1. <dependency>
  2.     <groupId>org.springframework.boot </groupId>
  3.     <artifactId>spring-boot-starter-jdbc </artifactId>
  4. </dependency>

        当引入jdbc依赖之后,Spring Boot会自动默认分别注入DataSourceTransactionManager或JpaTransactionManager,所以我们不需要任何额外配置就可以用@Transactional注解进行事务的使用。然后在Service中添加@Transactional注解即可。

4、整合 Redis

        在Spring Boot中提供了RedisTempplate的操作,我们暂时不做使用,先按照我们之前的实现来完成。我们创建RedisSpringConfig如下:


 
 
  1. @Configuration
  2. @PropertySource(value = "classpath:redis.properties")
  3. public class RedisSpringConfig {
  4.     @Value( "${redis.maxTotal}")
  5.     private Integer redisMaxTotal;
  6.     @Value( "${redis.node1.host}")
  7.     private String redisNode1Host;
  8.     @Value( "${redis.node1.port}")
  9.     private Integer redisNode1Port;
  10.     private JedisPoolConfig jedisPoolConfig() {
  11.        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
  12.        jedisPoolConfig.setMaxTotal(redisMaxTotal);
  13.         return jedisPoolConfig;
  14.   }
  15.     @Bean
  16.     public ShardedJedisPool shardedJedisPool() {
  17.        List<JedisShardInfo> jedisShardInfos = new ArrayList<JedisShardInfo>();
  18.        jedisShardInfos.add( new JedisShardInfo(redisNode1Host, redisNode1Port));
  19.         return new ShardedJedisPool(jedisPoolConfig(), jedisShardInfos);
  20.   }
  21. }

附加,包含的资源文件:

redis.properties


 
 
  1. redis.maxTotal=200
  2. redis.node1.host=127.0.0.1
  3. redis.node1.port=6379

说明:在整合redis集群继续add即可。

5、整合Httpclient


 
 
  1. @Configuration
  2. @PropertySource(value = "classpath:httpclient.properties")
  3. public class HttpclientSpringConfig {
  4.     @Value( "${http.maxTotal}")
  5.     private Integer httpMaxTotal;
  6.     @Value( "${http.defaultMaxPerRoute}")
  7.     private Integer httpDefaultMaxPerRoute;
  8.     @Value( "${http.connectTimeout}")
  9.     private Integer httpConnectTimeout;
  10.     @Value( "${http.connectionRequestTimeout}")
  11.     private Integer httpConnectionRequestTimeout;
  12.     @Value( "${http.socketTimeout}")
  13.     private Integer httpSocketTimeout;
  14.     @Value( "${http.staleConnectionCheckEnabled}")
  15.     private Boolean httpStaleConnectionCheckEnabled;
  16.     @Autowired
  17.     private PoolingHttpClientConnectionManager manager;
  18.     @Bean
  19.     public PoolingHttpClientConnectionManager poolingHttpClientConnectionManager() {
  20.        PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager();
  21.         // 最大连接数
  22.        poolingHttpClientConnectionManager.setMaxTotal(httpMaxTotal);
  23.         // 每个主机的最大并发数
  24.        poolingHttpClientConnectionManager.setDefaultMaxPerRoute(httpDefaultMaxPerRoute);
  25.         return poolingHttpClientConnectionManager;
  26.   }
  27.     // 定期关闭无效连接
  28.     @Bean
  29.     public IdleConnectionEvictor idleConnectionEvictor() {
  30.         return new IdleConnectionEvictor(manager);
  31.   }
  32.     // 定义Httpclient对
  33.     @Bean
  34.     @Scope( "prototype")
  35.     // 多例对象
  36.     public CloseableHttpClient closeableHttpClient() {
  37.         return HttpClients.custom().setConnectionManager( this.manager).build();
  38.   }
  39.     // 请求配置
  40.     @Bean
  41.     public RequestConfig requestConfig() {
  42.         return RequestConfig.custom().setConnectTimeout(httpConnectTimeout) // 创建连接的最长时间
  43.               .setConnectionRequestTimeout(httpConnectionRequestTimeout) // 从连接池中获取到连接的最长时间
  44.               .setSocketTimeout(httpSocketTimeout) // 数据传输的最长时间
  45.               .setStaleConnectionCheckEnabled(httpStaleConnectionCheckEnabled) // 提交请求前测试连接是否可用
  46.               .build();
  47.   }
  48. }

附加,包含的资源文件内容如下:

httpclient.properties


 
 
  1. http.defaultMaxPerRoute= 100
  2. http.maxTotal= 300
  3. http.connectTimeout= 1000
  4. http.connectionRequestTimeout= 500
  5. http.socketTimeout= 10000
  6. http.staleConnectionCheckEnabled= true

6、整合RabbitMQ

        我们之前使用的Spring-Rabbit的xml方式,现在我们要改造成java方式,并且Spring Boot对RabbitMQ的使用做了自动配置,更加的简化了我们的使用。首先导入spring-boot-starter-amqp的依赖: 


 
 
  1. <dependency>
  2. <groupId>org.springframework.boot </groupId>
  3. <artifactId>spring-boot-starter-amqp </artifactId>
  4. </dependency>

然后在application.properties(全局配置文件)文件中配置RabbitMQ的连接信息:


 
 
  1. spring.rabbitmq.host=127.0.0.1
  2. spring.rabbitmq.port=5672
  3. spring.rabbitmq.password=123456
  4. spring.rabbitmq.username=shen
  5. spring.rabbitmq.virtual-host=/project

之后编写Rabbit的Spring配置类如下:


 
 
  1. @Configuration
  2. public class RabbitMQSpringConfig {
  3.     @Autowired
  4.     private ConnectionFactory connectionFactory;
  5.     // 管理
  6.     @Bean
  7.     public RabbitAdmin rabbitAdmin() {
  8.         return new RabbitAdmin(connectionFactory);
  9.   }
  10.     // 声明队列
  11.     @Bean
  12.     public Queue taotaoCartLoginQueue() {
  13.         // 默认就是自动声明的
  14.         return new Queue( "PROJECT-CART-LOGIN-QUEUE", true);
  15.   }
  16.     // 声明队列
  17.     @Bean
  18.     public Queue taotaoCartOrderSuccessQueue() {
  19.         // 默认就是自动声明的
  20.         return new Queue( "PROJECT-CART-ORDER-SUCCESS-QUEUE", true);
  21.   }
  22. }

最后设置监听如下:


 
 
  1. @Component
  2. public class rabbitmqHadler {
  3. @RabbitListener(queues= "PROJECT-CART-LOGIN-QUEUE")
  4. public void execute(String msg){
  5. ///...
  6. }
  7. }

 

 7、设置SpringMVC的配置

        在以前的配置中有如下内容:

现在需要在全局配置文件中配置视图解析器:


 
 
  1. spring.mvc.view.prefix=/WEB-INF/views/
  2. spring.mvc.view.suffix=.jsp

然后再配置一个自定义拦截器:


 
 
  1. @Configuration
  2. public class SpringMVCConfig extends WebMvcConfigurerAdapter {
  3.     @Autowired
  4.     private UserLoginHandlerInterceptor userLoginHandlerInterceptor;
  5.     @Override
  6.     public void addInterceptors(InterceptorRegistry registry) {
  7.         // 判断用户是否登录的拦截器
  8.        registry.addInterceptor(userLoginHandlerInterceptor).addPathPatterns( "/cart/**");
  9.   }
  10. }

其中自定义拦截器内容如下:


 
 
  1. @Component
  2. public class UserLoginHandlerInterceptor implements HandlerInterceptor {
  3.     public static final String COOKIE_NAME = "TT_TOKEN";
  4.     @Autowired
  5.     private UserService userService;
  6.     @Override
  7.     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
  8.             throws Exception {
  9.        String token = CookieUtils.getCookieValue(request, COOKIE_NAME);
  10.         if (StringUtils.isEmpty(token)) {
  11.             // 未登录状态
  12.             return true;
  13.       }
  14.        User user = this.userService.queryUserByToken(token);
  15.         if ( null == user) {
  16.             return true;
  17.       }
  18.        UserThreadLocal.set(user); // 将对象放入到本地线程中
  19.         return true;
  20.   }
  21.     @Override
  22.     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
  23.            ModelAndView modelAndView) throws Exception {
  24.   }
  25.     @Override
  26.     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
  27.            Exception ex) throws Exception {
  28.        UserThreadLocal.set( null);
  29.   }
  30. }

8、设置dubbo的配置

        Dubbo目前只能使用xml配置的方式,所以我们需要保留xml,并且需要将该xml加入到现有的Spring容器中才能生效。

第一步:将dubbo目录以及下面的xml配置文件拷贝到springboot项目中,内容如下:

dubbo-consumer.xml


 
 
  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:context= "http://www.springframework.org/schema/context" xmlns:p= "http://www.springframework.org/schema/p"
  3. xmlns:aop= "http://www.springframework.org/schema/aop" xmlns:tx= "http://www.springframework.org/schema/tx"
  4. xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo= "http://code.alibabatech.com/schema/dubbo"
  5. xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
  6. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
  7. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
  8. http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  9. <!-- 提供方应用信息,用于计算依赖关系 -->
  10. <dubbo:application name="project-cart-consumer" />
  11. <!-- 这里使用的注册中心是zookeeper -->
  12. <dubbo:registry address="zookeeper://127.0.0.1:2181" client="zkclient"/>
  13. <!-- 从注册中心中查找服务 -->
  14. <dubbo:reference id="userQueryService" interface="com.shen.sso.query.service.UserQueryService"/>
  15. </beans>

​然后将dubbo的xml文件加入到spring容器


 
 
  1. @ImportResource(value = "classpath:dubbo/dubbo-consumer.xml")
  2. @SpringBootApplication
  3. public class Projectplication extends SpringBootServletInitializer{
  4. }

三、编写入口类

然后编写入口类如下:


 
 
  1. public class Main {
  2.     public static void main(String[] args) {
  3.        SpringApplication.run(ProjectApplication.class, args);
  4.   }
  5. }

此时全局配置文件(application.properties)内容如下:


 
 
  1. server.port=8086
  2. server.servlet-path=/
  3. spring.mvc.view.prefix=/WEB-INF/views/
  4. spring.mvc.view.suffix=.jsp
  5. spring.rabbitmq.host=127.0.0.1
  6. spring.rabbitmq.port=5672
  7. spring.rabbitmq.password=123456
  8. spring.rabbitmq.username=shen
  9. spring.rabbitmq.virtual-host=/project
  10. #logging.level.org.springframework=DEBUG

整合完毕。

 

四、将spring boot程序发布到独立的tomcat中运行

        在开发阶段我们推荐使用内嵌的tomcat进行开发,因为这样会方便很多,但是到生成环境,我希望在独立的tomcat容器中运行,因为我们需要对tomcat做额外的优化,这时我们需要将工程打包成war包发进行发布。

第一步:工程的打包方式为war。

第二步:将spring-boot-starter-tomcat的范围设置为provided,设置为provided是在打包时会将该包排除,因为要放到独立的tomcat中运行,是不需要的。


 
 
  1. <dependency>
  2. <groupId>org.springframework.boot </groupId>
  3. <artifactId>spring-boot-starter-tomcat </artifactId>
  4. <scope>provided </scope>
  5. </dependency>

第三步:修改代码,设置启动配置。需要集成SpringBootServletInitializer,然后重写configure,将Spring Boot的入口类设置进去。


 
 
  1. @Configuration
  2. @PropertySource(value = { "classpath:jdbc.properties", "classpath:httpclient.properties" })
  3. @ComponentScan(basePackages = "com.Project")
  4. @ImportResource(value = "classpath:dubbo/dubbo-consumer.xml")
  5. @SpringBootApplication
  6. public class ProjectApplication extends SpringBootServletInitializer{
  7. @Value( "${jdbc.url}")
  8. private String jdbcUrl;
  9. @Value( "${jdbc.driverClassName}")
  10. private String jdbcDriverClassName;
  11. @Value( "${jdbc.username}")
  12. private String jdbcUsername;
  13. @Value( "${jdbc.password}")
  14. private String jdbcPassword;
  15. @Bean(destroyMethod = "close")
  16. public DataSource dataSource() {
  17. BoneCPDataSource boneCPDataSource = new BoneCPDataSource();
  18. // 数据库驱动
  19. boneCPDataSource.setDriverClass(jdbcDriverClassName);
  20. // 相应驱动的jdbcUrl
  21. boneCPDataSource.setJdbcUrl(jdbcUrl);
  22. // 数据库的用户名
  23. boneCPDataSource.setUsername(jdbcUsername);
  24. // 数据库的密码
  25. boneCPDataSource.setPassword(jdbcUsername);
  26. // 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0
  27. boneCPDataSource.setIdleConnectionTestPeriodInMinutes( 60);
  28. // 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0
  29. boneCPDataSource.setIdleMaxAgeInMinutes( 30);
  30. // 每个分区最大的连接数
  31. boneCPDataSource.setMaxConnectionsPerPartition( 100);
  32. // 每个分区最小的连接数
  33. boneCPDataSource.setMinConnectionsPerPartition( 5);
  34. return boneCPDataSource;
  35. }
  36. @Override
  37. protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
  38. return builder.sources(ProjectApplication.class);
  39. }
  40. }

 第四步:打war包

 

 第五步:部署到tomcat。将war包解压到webapps下的ROOT目录中,启动即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值