去年九月份我和同事在极客时间上买了 无语的奇异果 的Spring 全家桶学习,课程总共分为16章,我已经学了大半部分了,之前是在笔记本上记录,今天我想记录在Blog 上 ,分享更多的知识给有需要帮助的人,我会以章节数来作为文章的内容,原课程讲的更详细,我这里就一些具体的点做一个总结。
1.Spring 全家桶包含哪些?诞生于2002 作者是 Rod JohnSon,现在Spring 已经发展到5.x 版本了
SpringFrameWork
用于构建企业应用的轻量级解决方案
理念:
1.体现海纳百川的精神2.保持向后兼容性3.专注API 设计4.追求严苛的代码质量SpringBoot
概念:快速构建基于Spring的应用程序
特点:
1.快 2.开箱即可用。3.提供各种非功能属性4.不用生成代码 没有XML 配置5.内置Tomcat容器 ,启动非常的方便。 二.了解Spring 的发展趋势改动点:
1.Java 8+ Kotlin 2.WebFlux (异步编程模式的崛起)3.去掉了很多支持 (Portlet 过时了,Velocity 不维护了 JasperReport 不流行了) 三.创建一个Spring程序省略
四.如何配置单数据源SpringBoot做了哪些配置
DataSourceAutoConfiguration (配置DataSource)DataSourceTransactionManagerAutoConfiguation(配置DataSourceTransactionManager)JdbcTemplateAutoConfiguration (配置JdbcTemplate)
配置mysql连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/prod?useUnicode=true&辛勤的哈密瓜=utf8&useSSL=falsespring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.jdbc.Driverpom 文件中引入依赖
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.39</version></dependency>配置内嵌数据库 h2
(1) 新建一个SpringBoot项目
(2) 在创建这个SpringBoot项目的时候我引入了 hz 和 jdbc
pom.xml文件中的内容如下:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>spring-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>spring-demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency> <!--h2内嵌数据库--> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>(3) 在配置文件中配置h2连接信息
server.port=8007management.endpoints.web.exposure.include=*spring.output.ansi.enabled=ALWAYSspring.datasource.url=jdbc:h2:mem:testdbspring.datasource.username=saspring.datasource.password=(4) 往这个默认的h2 数据库中添加数据
(5)启动这个Spring 服务
打印数据出来的时候连接的就是这个h2 数据库。
五.如何配置多数据源配置多数据源的注意事项:
1.不同数据源配置要分开2.关注每次使用的数据源 a. 有多个DataSource 时系统应该如何判断 b. 对应的设施(事务,ORM 等) 如何选择DataSource多数据源配置有俩种方式:
第一种,完全的靠手工配置,排除掉SpringBoot相关的依赖,这个是完全可以的。
第二种, 如果想与SpringBoot 协同合作(二选一)。
方式一. 配置@Primary 类型的Bean
方式二. 排除掉 SpringBoot的自动配置
(DataSourceAutoConfiguation DataSourceTransactionManagerAutoConfiguation JdbcTemplateAutoConfiguation )
今天介绍一下第二种方式的用法:
步骤(1):
在配置文件中配置连接信息:
server.port=8007management.endpoints.web.exposure.include=*spring.output.ansi.enabled=ALWAYSfoo.datasource.url=jdbc:h2:mem:foofoo.datasource.username=safoo.datasource.password=bar.datasource.url=jdbc:h2:mem:barbar.datasource.username=sabar.datasource.password=步骤(2):
package com.example;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration;@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, JdbcTemplateAutoConfiguration.class})public class SpringDemoApplication { public static void main(String[] args) { SpringApplication.run(SpringDemoApplication.class, args); }}步骤(3):
package com.example.config;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import org.springframework.transaction.PlatformTransactionManager;import javax.annotation.Resource;import javax.sql.DataSource;@Configurationpublic class MultiDataSourceConfig { private Logger log = LoggerFactory.getLogger(MultiDataSourceConfig.class); /** * Config Foo DataSource * @return */ @Bean @ConfigurationProperties("foo.datasource") public DataSourceProperties fooDataSourceProperties() { return new DataSourceProperties(); } @Bean public DataSource fooDataSource() { DataSourceProperties dataSourceProperties = fooDataSourceProperties(); log.info("foo datasource: {}", dataSourceProperties.getUrl()); return dataSourceProperties.initializeDataSourceBuilder().build(); } @Bean @Resource public PlatformTransactionManager fooTxManager(DataSource fooDataSource) { return new DataSourceTransactionManager(fooDataSource); } /** * Config Bar DataSource * @return */ @Bean @ConfigurationProperties("bar.datasource") public DataSourceProperties barDataSourceProperties() { return new DataSourceProperties(); } @Bean public DataSource barDataSource() { DataSourceProperties dataSourceProperties = barDataSourceProperties(); log.info("bar datasource: {}", dataSourceProperties.getUrl()); return dataSourceProperties.initializeDataSourceBuilder().build(); } @Bean @Resource public PlatformTransactionManager barTxManager(DataSource barDataSource) { return new DataSourceTransactionManager(barDataSource); }}这篇文章先总结到这,文章内容太多可读性就很差,我接下来还会出几期文章