SpringBoot Beans定义 连接池
SpringBoot Beans定义
原有Spring框架,定义Bean方法如下
- xml配置
- 组件扫描、@Controller、@Service...
原有Spring框架,参数注入方法如下
常用的参数注入有注入基本值/对象
- xml配置
- @Value、@Autowired、@Resource等
SpringBoot框架,定义Bean方法如下
- 利用@Configuration+@Bean
- 利用组件扫描@ComponentScan+@Controller\@Service\@Configuration...
SpringBoot框架,参数注入方法如下
- Bean对象之间注入就使用@Autowired或@Resource即可
从配置文件注入基本值@EnableConfigurationProperties(@EnableAutoConfiguration(功能包含前面的EnableConfigurationProperties))+@ConfigurationProperties+@Value("$(key)")
可以将application.properties中的参数注入到对象中。
@SpringBootApplication注解
该注解主要包含以下功能:
- @Configuration bean定义
- @ComponentScan 组件扫描(路径默认是本包和子包路径)
- @EnableAutoConfiguration 自动配置
@EnableAutoConfiguration自动配置原理
开启Spring自动配置后,会调用spring-boot-autoconfigure.jar进行处理。包中META-INF/spring.factories文件,定义了自动配置启用的功能。
例如:
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration,\
org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration,\
org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration,\
org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration,\
org.springframework.boot.autoconfigure.web.HttpEncodingAutoConfiguration,\
org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration,\
org.springframework.boot.autoconfigure.web.MultipartAutoConfiguration,\
org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration,\
org.springframework.boot.autoconfigure.web.WebClientAutoConfiguration,\
org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration,\
通过自动配置,底层创建了DispatcherServlet、RequestMappingHanlderMapping、ViewResolver、DataSource、JdbcTemplate对象放入Spring容器,使用时也可以直接注入应用。
SpringBoot连接池
默认连接池使用方法
使用方法如下:
在pom.xml中追加spring-boot-stater-jdbc和驱动包支持
<!-- 追加spring-jdbc/tomcat-jdbc连接池等 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency> <!-- ojdbc6引入采用了build-path -->
在application.properties追加datasource定义
spring.datasource.username=SCOTT
spring.datasource.password=TIGER
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
spring.datasource.driverClassName=oracle.jdbc.OracleDriver
从Spring容器获取dataSource和jdbcTemplate对象
ApplicationContext ac =
SpringApplication.run(BootBeanFactory.class);
DataSource ds = ac.getBean("dataSource",DataSource.class);
JdbcTemplate template =
ac.getBean("jdbcTemplate",JdbcTemplate.class);
默认连接池规则
在引入spring-boot-starter-jdbc后,内部包含了tomcat-jdbc包,里面有tomcat连接池.然后通过自动配置DataSourceAutoConfigurer创建DataSource对象。
SpringBoot创建默认DataSource时,规则如下:
- 优先寻找创建Tomcat连接池
- 如果没有Tomcat连接池,会查找创建HikariCP
- 如果没有HikariCP连接池,会查找创建dbcp
- 如果没有dbcp连接池,会查找创建dbcp2
可以使用spring.datasource.type属性指定连接池类型
spring.datasource.type=org.apache.commons.dbcp.BasicDataSource
多数据源应用
如果系统需要访问多个不同的数据库,可以手动创建多个连接池对象。(默认连接池不再创建)
@Configuration
public class DataSourceConfig {@Bean("dbcpDS1")</br>
@Primary//注入时默认注入该类型对象</br>
@ConfigurationProperties(prefix="spring.datasource")</br>
public DataSource createDbcp1(){</br>
// BasicDataSource dbcp = new BasicDataSource();
// dbcp.setUsername("SCOTT");
// dbcp.setPassword("TIGER");
// dbcp.setDriverClassName("oracle.jdbc.OracleDriver");
// dbcp.setUrl("jdbc:oracle:thin:@localhost:1521:XE");
// return dbcp;
DataSource dbcp = DataSourceBuilder.create()
.type(BasicDataSource.class).build();
return dbcp;
}
}
当存在多个DataSource对象时,会引起底层注入异常,需要将某一个追加@Primary标记,指定为默认注入对象。
SpringBoot DAO
自动配置已经默认创建了JdbcTemplate对象,开发者只需要编写实体类、Dao接口、Dao实现类,注入JdbcTemplate使用。
@Repository
public class JdbcBookDao implements BookDao{@Autowired</br>
private JdbcTemplate jdbcTemplate;</br></br> @Override</br>
public List<Book> findAll() {</br>
String sql = "select * from xdl_book";</br>
RowMapper<Book> rowMapper = new BeanPropertyRowMapper<Book>(Book.class);</br>
return jdbcTemplate.query(sql, rowMapper);</br>
}</br></br>
}
SpringBoot Mybatis
引入mybatis-spring-boot-starter集合包,会自动引入mybatis、mybatis-spring等包。
在pom.xml引入mybatis-spring-boot-starter
<!-- mybatis-spring -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.2</version>
</dependency>
编写实体类
public class Product implements Serializable{
private int id;
private String name;
private String keywords;
private Date add_time;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
//其他省略
}
编写Mapper接口,在接口方法中定义SQL语句
public interface ProductDao {@Select("select * from xdl_product")</br>
public List<Product> findAll();</br></br>
}
在主启动类追加@MapperScanner标记
@SpringBootApplication
@MapperScan(basePackages={"cn.xdl.dao"})//扫描mapper接口创建对象
public class BootBeanFactory { }
获取Spring容器productDao对象使用
ApplicationContext ac =
SpringApplication.run(BootBeanFactory.class);
ProductDao proDao =
ac.getBean("productDao",ProductDao.class);
List<Product> list = proDao.findAll();
for(Product pro:list){
System.out.println(pro.getId()+" "+pro.getName());
}
SpringBoot Beans定义 连接池的更多相关文章
- SpringBoot 使用Hikaricp连接池
1.添加pom.xml依赖 如果是SpringBoot2.0,那么默认的连接池就是Hikaricp,不需要配置 其他的,如果继承 <parent> <groupId>org.s ...
- SpringBoot下Druid连接池的使用配置
Druid是一个JDBC组件,druid 是阿里开源在 github 上面的数据库连接池,它包括三部分: * DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体 ...
- springboot使用lettuce连接池
springboot对连接池的使用非常智能,配置文件中添加lettuce.pool相关配置,则会使用到lettuce连接池,并将相关配置设置为连接池相关参数,(前提是这些参数是springboot配置 ...
- springboot整合druid连接池、mybatis实现多数据源动态切换
demo环境: JDK 1.8 ,Spring boot 1.5.14 一 整合durid 1.添加druid连接池maven依赖 <dependency> <groupId> ...
- springboot集成druid连接池
使用druid连接池主要有几步: 1.添加jar和依赖 <groupId>org.mybatis.spring.boot</groupId> <artifactId> ...
- SpringBoot 使用Druid连接池
1.pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- SpringBoot 基于lettuce 连接池 配置redis多数据源操作 生产配置
添加pom<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons- ...
- springboot缓存及连接池配置
参见https://coding.imooc.com/lesson/117.html#mid=6412 1.springboot的springweb自己默认以及配置好了缓存,只需要在主文件(XxxAp ...
- springboot使用druid连接池连接Oracle数据库的基本配置
#阿里连接池配置 #spring.datasource.druid.driver-class-name=oracle.jdbc.driver.OracleDriver #可配可不配,阿里的数据库连接池 ...
随机推荐
- JSP自定义标签开发步骤
自定义的标签库一.基本概念: 1.标签(Tag): 标签,通常也成为动作,是一组按照XML语法格式编写的代码片段,在JSP中,用来封装在页面中可重复利用的逻辑,通过标签可以使JSP网页变得简洁并且易于 ...
- laravel学习笔记(二)
路由 HTTP方法:支持http1.1中所有类型传参方式,get,post,put,delete,options,patch Route::get($url,$callback); 路由参数: Rou ...
- rabbitmq的知识点
rabbitmq,分为集群和主从2种. 主从式与集群式的速度差10倍. 每个rabittmq组需要3台机器. 集群式,稳定性高,主从式,速度快. 可以做任务分配,单点锁(二进制树实现). 只有当消息和 ...
- python中 import 和from ... import 的区别
先看一个例子: 我自定义的一个moudle,里面有一个方法sayhi,还有一个变量version#!/usr/bin/env python # coding=utf-8 # Filename: mym ...
- ubuntu4.04服务器添加虚拟主机
buntu 14.04配置虚拟主机 虚拟主机常用于在一个单独的IP地址上提供多个域名的网站服务.如果有人想在单个VPS的单个IP地址运行多个网站,这是非常有用的.在这个教程中,让我告诉你如何设置在 ...
- 记一次mysql优化操作
这次操作,起因是需要获取用户来源及用户性别,而用户的性别信息在第三方授权的中有,存为JSON格式, 不想用php去解析获取,所以试试mysql操作 如果你有更好的解决方案,请留言告诉我! 情景简化 表 ...
- Architecture:架构 元素与关系
http://www.iso-architecture.org/42010/cm/ Systems have architectures. In the Standard, the architect ...
- 什么是WebSocket (经常听别人讲感觉很高大上其实不然)
WebSocket 协议在2008年诞生,2011年成为国际标准.现在所有浏览器都已经支持了.WebSocket 的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真 ...
- linux下的基础操作
Xfce 终端: Linux 命令行终端,打开后会进入 zsh Shell 环境,可以使用 Linux 命令. NetSurf 网络浏览器:浏览器,可以用在需要前端界面的课程里,只需要打开环境里写的 ...
- run_debug和run_demo的区别
run_demo:给一张图,直接生成测试出来的框,输入不用给gt框 run_debug:生成ap值,生成的图片既有gt框也有测试得到的结果框 run_demo的源码demo_test放在example ...