什么是springboot
springboot是简化spring应用开发,是J2EE一站式解决方案,降低了对配置文件的要求。整合了整个spring的应用技术栈。
什么是微服务
微服务是一种架构风格,是由一组小型服务组成,每一个小型服务都运行在自己的进程上,通过http方式进行沟通,微服务是把应用中的每一个功能元素都独立出来,通过动态组合的方式进行使用,每一个功能元素最终都是一个可独立替换和独立升级的软件单元。区别于传统单体应用,所有的功能单元都写着一个应用里面,打包成一个war。
@SpirngBootApplication注解
(默认扫描同包,或者子包下的类,不然可能会404)
是一个组合注解主键,由以下组成
1.@springbootconfiguration:标注在某个类上,表示这个类是配置类,并注入容器中,底层由@configuration实现。
2.@EnableAutoConfiguration:开启自动配置功能,把以前需要配置的东西交给springboot自动配置,告诉springboot开启自动配置功能。底层由@AutoconfigurationPackage实现,作用是给容器中导入一个组件,底层由@impor来导入这个组件,(真正作用)这个主键可以将@SpirngBootApplication所在的包和子包里面的组件加载到spring容器中,实现自动配置。
3.@import:给容器中导入组件选择器,将需要的组件以全类名的方式返回,返回的组件就回到容器中(真正作用)会给容器中导入场景(小型服务)所需要的所有组件(类),并配置好这些组件。
4.自动配置功能组件的原理:
springboot在启动的时候会通过EnableAutoconfiguration.class的selectimports方法从META-INF/spring.factories中获取properties文件中的全路径类名,将这些类名主动导入容器中,自动配置类就生效了。
package com.zxh.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/*
* @SpirngBootApplication
* 作用:用来标注一个主程序类,说明这这是一个springboot应用
*
* */
@SpringBootApplication
public class springbootTest {`在这里插入代码片`
public static void main(String[] args) {
//让spring应用启动起来
SpringApplication.run(springbootTest.class,args);
}
}
springboot的简化部署
1.导入插件
<build>
<!--这个配置,可以将应用打包成一个可执行的jar包-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2.打包成jar架包
3.复制到桌面,拿到jar架包的位置
5.启动cmd,输入位置
6.使用 java -jar springbootfirst.jar命令部署架包
springboot运行探索
spring-boot-starter是spring-boot场景启动器,
springboot将所有功能都抽取出来,做成一个个的staters(小型服务),只需要在项目中引入需要的场景,就能够帮我们导入相关的依赖
一.pom.xml
1.spring-boot-starter-parent父项目
依赖于spring-boot-dependencies父项目,作用是用来管理springboot应用里面的所有依赖版本。
2.spring-boot-starter-web依赖
spring-boot-starter-web帮我们导入了web模块正常运行所依赖的项目。
二.主程序类
1.@SpirngBootApplication:作用是用于说明springboot的主配置类,需要自动配置的包和自动配置的组件(场景或者小型服务)。spring boot会运行这个主配置类的main方法来启动springboot运用
springboot的配置文件
springboot使用一个全局配置文件,采用application.properties或者application.yml,配置文件名称是固定的。
yml介绍
作用:修改springboot自动配置的默认值
yml是什么:是一种标记语言,跟xml文件一样都是标记语言,但是yml是以数据为中心
yml语法格式:
不用大量的解析标签,关注内容数据。
如修改服务器端口号
server:
port:8081
而传统的xml语法格式是:
把大量的处理浪费在了解析标签上
<server>
<port>8081</port>
</server>
yml语法格式:
yml语法:
1.基本语法
k:(空格)v:表示一对键值对(空格必须有)
以空格的缩进来控制层级关系,只要是左对齐的一列标签,都是同一层级的,属性和值都是大小写敏感的
server:
port: 8081
path: /hello
2.值的写法
基本类型和string类型
写法 K: V(字符串默认不用加上引号)
加双引号会转义字符串里面的特殊字符
加单引号不会转义特殊字符,直接输出。
int: 100
String: zxh111
JavaBean对象,map,(键值对):
写法一:K: v
User:
name: zxh
passwod: 111
price: 666
写法二:行内写法
User: {name: zxh,password: 111,price: 666}
List,Set:
写法一:- (空格)值表示数组中的一个元素
price:
- 777
- 888
- 999
- 1000
写法二:行类写法
price:{777,888,999,1000}
properties文件的使用格式
采用key=value的形式
//javabean对象写法
user.password=zxh //基本类型写法
user.books.math=111 //map类型写法
user.books.music=muisc
user.days=1,2,3,4 //list集合类型写法
***@ConfigurationProperties:***默认从全局配置文件中获取值(application.yml)
告诉springboot,将yml配置或者properties配置映射到pojo的bean对象属性中,写在bean实体类上面,前提是这个bean在spring的容器中(使用@Commnent注解)。
属性:prefix=“ ”指定配置文件中的属性对象。
对比:
他的功能比@Value注解要强大一些,他可以从配置文件中注入Javabean类型,集合类型,map类型到实体类中,@Value只能注入基本类型和字符串,但支持spEL表达式。
@PropertySource 作用:加载指定的配置文件,一般写在配置类上
属性:value={“classpath:xxxx.properties”,"",…}
@ImportResource作用:加载指定的spring配置文件,一般写在配置类上(不用)
属性:location={“classpath:xxxx.xml”,"",…}
springboot推荐使用配置类的方式给与容器添加组件
1.声明配置spring的配置类
2.使用@Bean给容器添加注解
package com.zxh.springbootinit.config;
import com.zxh.springbootinit.pojo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/*
* @Configuration:作用是声明这是一个配置类,用于替代spring配置文件
*
*
* */
@Configuration
public class Springcofig {
/*
* @Bean:将方法的返回值添加到容器中,默认id是方法名
* */
@Bean
public User returnUser(){
return new User();
}
}
配置文件占位符:
1.随机数占位符int,uuid,long,value…
2.获取之前配置的值,如果没有就把配置的占位符当作字符串返回
使用方法
${}
user.password=zxh
user.books.math=111
user.books.music=${user.password}muisc
user.days=1,2,3,${random.int}
Profile
作用:给不同的开发环境(测试,开发,运行,发布等)提供功能的支持
1.多Profile文件方式
配置文件名称编写格式:application-{profile}.properties/yml默认使用application.properties/yml
激活方式:在对应的application-{profile}.properties/yml配置文件中指定:springprofiles.active=dev ,就可激活
springprofiles.active=dev
2.yml支持多文档块方式
server:
port: 8081
spring:
profiles:
active: dev
---
server:
port: 8082
spring:
profiles: dev
---
server:
port: 8083
profiles: prod
激活对应的代码块方式:
spring:
profiles:
active: dev