Springboot入门
Posted zhanshen666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot入门相关的知识,希望对你有一定的参考价值。
1、springboot简介
- 创建独立的Spring应用程序
- 嵌入tomcat,无需部署war文件
- 简化maven配置
- 自动配置spring
- 提供生产就绪功能
- 没有代码生产和对xml没有要求配置
2、微服务介绍
微服务时一种架构风格;一个应用应该是一组小型服务;可以通过HTTP进行互通;
每一个元素最终都是一个可独立替换和独立升级的软件单元
3、环境准备
–jdk1.8:Spring Boot 推荐jdk1.7及以上;java version "1.8.0_152";
–maven3.x:maven 3.3以上版本;Apache Maven 3.5.3;
–IntelliJIDEA2017:IntelliJ IDEA 2017.2.2 x64、STS ;
–SpringBoot 1.5.9.RELEASE:1.5.9;
1、配置maven:
给maven 的settings.xml配置文件的profiles标签添加
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
2、IDEA配置maven
菜单选择File>>Settings>>Maven;如图:
4、创建helloworld应用
1、创建maven项目
2、导入springboot相关的依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3、编写主程序,启动springboot应用
//@SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args) {
// Spring应用启动起来
SpringApplication.run(HelloWorldMainApplication.class,args);
}
}
4、编写相关的Controller、Service
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "Hello World!";
}
}
5、运行主程序测试
6、简化部署
<!-- 这个插件,可以将应用打包成一个可执行的jar包;-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
用maven将应用打成jar包,控制台进入jar包所在目录,直接使用java -jar的命令进行执行;
7、HelloWold探究
1、父项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
他的父项目是
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
他来真正管理Spring Boot应用里面的所有依赖版本;
2、启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter:场景启动器,帮我们导入web模块正常运行所依赖的足迹。
Springboot将所有的功能场景都抽取出来,做成了一个个的Starts,只需要在项目里引入这些starts,相关场景所需的依赖都会导入进来。
3、主程序入口类
@SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;
@Configuration:配置类上来标注这个注解;
5、使用Spring Initializer快速创建Spring Boot项目
1、使用idea的Spring Initializer快速创建Spring Boot项目
- 新建project,选择Spring Initializer,如图
2.填写MAVEN项目相关信息
- Group:是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。
- ArtifactID:就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
- Description:项目描述
- Package:新建项目生产的包
3.选择我们需要的模块,向导会联网创建Springboot项目
4、填写项目信息
这样springboot项目就已经构建好了
resources文件夹中目录结构
- static:保存所有的静态资源; js css images;
- templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymeleaf);
- application.properties:Spring Boot应用的配置文件;可以修改一些默认设置;
6、配置文件详解
1、SpringBoot使用一个全局的配置文件,配置文件名是固定的;
application.properties
application.yml
作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;
2、YAML:
1、基本语法
k:(空格)v:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
server:
port: 8081
path: /hello
属性和值也是大小写敏感;
2、值得写法
字面量:普通的值(数字,字符串,布尔)
k: v:字面直接来写;
? 字符串默认不用加上单引号或者双引号;
? "":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
? name: "zhangsan
lisi":输出;zhangsan 换行 lisi
? ‘‘:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
? name: ‘zhangsan
lisi’:输出;zhangsan
lisi
对象、Map(属性和值)(键值对):
k: v:在下一行来写对象的属性和值的关系;注意缩进
? 对象还是k: v的方式
friends:
lastName: zhangsan
age: 20
行内写法:friends: {lastName: zhangsan,age: 18}
数组(List、Set):
用- 值表示数组中的一个元素
pets:
- cat
- dog
- pig
行内写法 pets: [cat,dog,pig]
3、配置文件值注入
配置文件:
person:
lastName: hello
age: 18
boss: false
birth: 2017/12/12
maps: {k1: v1,k2: 12}
lists:
- lisi
- zhaoliu
dog:
name: 小狗
age: 12
javaBean:
// 将配置文件中配置的每一个属性的值,映射到这个组件中
//@ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
// prefix = "person":配置文件中哪个下面的所有属性进行一一映射
//组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
我们可以导入配置文件处理器,以后编写配置就有提示了
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
properties配置文件在idea中默认utf-8可能会乱码
4、Profile
1、多个Profile文件
在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml
默认使用application.properties的配置;
2、yml支持多文档块方式
server:
port: 8081
spring:
profiles:
active: prod
---
server:
port: 8083
spring:
profiles: dev
---
server:
port: 8084
spring:
profiles: prod #指定属于哪个环境
3、激活指定的Profile
1、在配置文件中指定 spring.profiles.active=dev
2、命令行:
? java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;
? 可以直接在测试的时候,配置传入命令行参数
3、虚拟机参数;
? -Dspring.profiles.active=dev
4、配置文件加载位子
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件
–file:./config/
–file:./
–classpath:/config/
–classpath:/
优先级由高到底,高优先级的配置会覆盖低优先级的配置;
SpringBoot会从这四个位置全部加载主配置文件;互补配置;
还可以通过spring.config.location来改变默认的配置文件位置==
项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置;
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties
以上是关于Springboot入门的主要内容,如果未能解决你的问题,请参考以下文章