什么是Spring Boot?
Spring Boot就是一些库的集合,它能够被任意项目的构建系统所使用,简化新Spring应用的初始搭建以及开发过程,简化配置,用更简单的办法整合第三方其他技术。
使用spring boot有什么好处
其实就是简单、快速、方便!
平时如果我们需要搭建一个spring web项目的时候需要怎么做呢?
配置web.xml,加载spring和spring mvc
配置数据库连接、配置spring事务
配置加载配置文件的读取,开启注解
配置日志文件
...
配置完成之后部署tomcat 调试
使用sping boot到底有多爽
系统性归纳总结
一、SpringBoot的作用
- 简化配置文件
- 以更简单的方式整合第三方技术
- Redis
- ElasticSearch
- MyBatis
二、使用SpringBoot的套路
- 加入需要的场景starter依赖
- 配置properties或yml
- 创建主启动类
- 通过注解开启相关功能
- 运行主启动类
三、HelloWorld
1.操作步骤
①创建Maven工程
②加入依赖
<!-- 继承SpringBoot官方指定的父工程 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.8.RELEASE</version> </parent> <dependencies> <!-- 加入Web开发所需要的场景启动器 --> <dependency> <!-- 指定groupId和artifactId即可,版本已在父工程中定义 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
③创建主启动类
④创建HelloWorldHandler,现在创建的hanlder不会自动扫描,因为只有主启动类的子包才会自动扫描
下面这个才正确
SpringBootHelloWorld
/** * * 启动类 * */ @SpringBootApplication public class SpringBootHelloWorld { public static void main(String[] args) { SpringApplication.run(SpringBootHelloWorld.class, args); } }
⑤启动
运行主启动类中的main方法启动SpringBoot程序。
⑥通过网页访问handler方法
2.原理探究
①核心机制
注意:
spring boot默认会加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration类,
DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean。
因为工程中如果没有关于dataSource相关的配置信息,当spring创建dataSource bean因缺少相关的信息就会报错。
在Application类上增加@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
阻止spring boot自动注入dataSource bean,后面加上了druid有了dataSoure配置,就不需要加这个注解@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
@ComponentScan:Spring组件扫描。
四、SpringBoot环境下配置文件
1.总述
SpringBoot环境下常用的配置文件有两种,一种是properties属性文件,一种是yml文件。二者各有特点,语法也有很大区别,但是最终效果基本一致。
2.properties文件使用
文件名:application.properties
properties文件语法格式:
server.port=8074 spring.datasource.url=jdbc:mysql://localhost:3306/gmall?characterEncoding=UTF-8 spring.datasource.username=root spring.datasource.password=root mybatis.configuration.map-underscore-to-camel-case=true mybatis.mapper-locations=classpath:mapper/*Mapper.xml spring.dubbo.registry.protocol=zookeeper spring.dubbo.registry.address=192.168.0.100:2181 spring.dubbo.application.name=gmall-cart-service spring.dubbo.protocol.name=dubbo spring.dubbo.base-package=com.javawxid logging.level.root=info spring.redis.host=192.168.0.100 spring.redis.port=6379 spring.redis.database=0
3.yml文件的使用
①yml简介
yml是YAML(YAML Ain't Markup Language)语言的文件,以数据为中心,比json、xml等更适合做配置文件。
②yml语法
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格。
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- 大小写敏感
③YAML 支持的三种数据结构
- 对象:键值对的集合
- 数组:一组按次序排列的值
- 字面量:单个的、不可再分的值
yml文件语法格式:
server: port: 8443 #开发环境会开启https ssl: key-store: keystore.p12 key-alias: tomcat key-store-password: 123456 key-store-type: PKCS12 spring: datasource: url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root password: 123456 druid: initial-size: 5 #连接池初始化大小 min-idle: 10 #最小空闲连接数 max-active: 20 #最大连接数 web-stat-filter: exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" #不统计这些请求数据 stat-view-servlet: #访问监控网页的登录用户名和密码 login-username: druid login-password: druid data: mongodb: host: localhost port: 27017 database: mall-port redis: host: 192.168.0.135 # Redis服务器地址 database: 0 # Redis数据库索引(默认为0) port: 6379 # Redis服务器连接端口 password: # Redis服务器连接密码(默认为空) jedis: pool: max-active: 8 # 连接池最大连接数(使用负值表示没有限制) max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制) max-idle: 8 # 连接池中的最大空闲连接 min-idle: 0 # 连接池中的最小空闲连接 timeout: 3000ms # 连接超时时间(毫秒) rabbitmq: host: 192.168.0.135 port: 5672 virtual-host: /mall username: mall password: mall publisher-confirms: true #如果对异步消息需要回调必须设置为true # 日志配置 logging: level: org.springframework.data.mongodb.core: debug com.macro.mall.mapper: debug com.macro.mall.portal.dao: debug
常见的SpringBoot依赖
pom.xml
<!--继承spring-boot-starter-parent,要成为一个spring boot项目,首先就必须在pom.xml中继承spring-boot-starter-parent,同时指定其版本--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.8.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!-- 环境参数,在普通maven项目中,需要在pom.xml中配置插件来修改jdk版本,utf-8编码等环境参数,在spring boot中则更加简单。 在eclipse中按ctrl+左键点击上面的spring-boot-starter-parent,查看其源码 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- 编译字符编码为utf-8 --> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!-- 输出字符编码为UTF-8 --> <java.version>1.8</java.version><!-- jdK版本 --> </properties> <dependencies> <!--核心依赖,包括auto-configuration , logging和YAML。--> <!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>--> <!-- 测试 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--springmvc,代表web模块,在这个模块中含了许多JAR包,有spring相关的jar,内置tomcat服务器,jackson等,这些web项目中常用的的功能都会自动引入--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--数据库连接池--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- MyBatis 生成器 --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.3</version> </dependency> <!-- MyBatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <!--Mysql数据库驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.15</version> </dependency> <!-- dataSource相关的配置信息DruidDataSource--> <!--集成druid连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> </dependencies> <!-- 编译生成可执行jar文件,默认情况下,maven打包生成的jar文件是用来给其他项目依赖用的,是无法直接运行的。 spring boot根据自生需要,提供了一个插件来生成可执行jar文件。在spring-boot-starter-parent源码中可以找到 --> <build> <!--在浏览器中的访问路径,如果将它改成helloworld,再执行maven--update,这时运行项目的访问路径是 http://localhost:8080/helloworld/ 而不是项目名的 http://localhost:8080/test--> <!--<finalName>demo</finalName>--> <!-- 在自己项目的pom.xml中声明这个插件,就会生效 --> <plugins> <!-- maven插件 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>