首页 > 编程知识 正文

spring全家桶教程,spring全家桶面试题

时间:2023-05-03 14:03:19 阅读:191165 作者:2635

前言:

去年九月份我和同事在极客时间上买了 无语的奇异果 的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.Driver

 pom 文件中引入依赖

<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); }}

这篇文章先总结到这,文章内容太多可读性就很差,我接下来还会出几期文章

 

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。