SpringBoot 入门
假装 == == 是高亮 黄色高亮!
后面的配置文件信息等可以用到再学,舍弃部分
@SpringBootApplication : 标注在一个类上,说明这个类是SpringBoot的主配置类,SpringBoot
就应该运行这个类的main方法来启动Spring应用 它唯一
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
-
@SpringBootConfiguration : 标注在某个类上,表示该类是SpringBoot的某个配置类
-
@Configuration: 用来标注一个类,表名这个类是Spring容器的配置类----相当于配置文件,配置类也是配置容器中的一个组件
-
@EnableAutoConfiguration: 开启自动配置功能
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
-
@AutoConfigurationPackage: 自动配置包
- @Import(AutoConfigurationPackages.Registrar.class): Spring的底层注解,给容器导入一个类
- AutoConfigurationPackages.Registrar.class: 这个类,会将主配置类,也就是@SpringBootApplication 标注的类,所在的包及所有子包中的组件扫描到Spring容器中
-
@Import(AutoConfigurationImportSelector.class)
-
AutoConfigurationImportSelector.class 将所有需要导入的组件以全类名的方式返回;这些组件就会添加到Spring容器中
-
这个类会自动给Spring容器到导入和很多的自动配置类(xxxAutoConfiguration:就是给容器中导入这个场景所需要的所有组件,并且配置好)
-
-
该配置文件所对应的整合包如下
-
-
SpringBoot在启动的时候回自动从Jar包中的META-INF/spring.factories的配置文件中获取AutoConfigurationImportSelector指定的值,并且将这些值导入到容器中,自动配置类就生效了
-
AutoConfigurationImportSelector.class 将所有需要导入的组件以全类名的方式返回;这些组件就会添加到Spring容器中
以前需要我们手动配置的东西,现在自动配置类都会帮我们直接配置
SpringBoot 描述:
SpringBoot 从Spring4.0 开始
对Spring整个技术栈进行整合
优点:
- 快速搭建项目
- 嵌入式Servlet容器,无需打包
- 自动的版本控制
- Starters自动配置,简化开发,也可以修改默认配置
- 无需配置XML,无代码生成
- 提供生产环境的监控
- 于云计算天然集成
微服务介绍
微服务:是一种架构风格
一个应用, 应该是一组小型服务,每个不同的服务之间通过HTTP的方式进行沟通
每一个服务都应该是可替换的,可独立的,可升级的 独立单元
一. SpringBoot简单使用
1. SpringBoot 编写 HelloWord
1.1 创建一个Maven工程,导入依SpringBoot赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
1.2 编写一个主程序
/**
* @SpringBootApplication 来标注一个Spring主程序类 说明这是一个Springboot应用
*/
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
1.3 编写业务代码
@Controller
public class Hello2Controller {
@RequestMapping("h")
@ResponseBody
public String test() {
return "hello Spring boot2";
}
}
业务代码,可以使用SpringMvc的原始注解,也可以使用SpringBoot提供的注解,
SpringBoot的注解对原始MVC注解做了简化 但是他们功能相同
1.4 部署SpringBoot项目
- 打jar包
<!--这个插件可以将应用打成一个可执行的jar包-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
-
通过命令 java -jar xxxxx.jar 启动项目
访问浏览器即可
1.5 引入父项目
版本仲裁包 spring-boot-dependencies
这个项目是所有starter的父项目,对其他的starter做依赖管理
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
spring-boot-starter-parent项目所依赖的父项目,还依赖另外一个项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.2.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
spring-boot-dependencies
该项目中定义了对jar包版本控制的管理
他才是来真正管理SpringBoot所有的依赖版本的东西
1.6 导入的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
-
spring-boot-starter-web: SpringBoot场景启动器;
- 帮我们导入了 web项目所需要的所有必须包,并且依赖的版本都收到仲裁器控制
-
SpringBoot 将所有需要的包,都抽取成一个个spring-boot-starter-* , 如果有需要就进行引入
2. 快速创建一个SpringBoot项目
2.1.选择创建Spring initalizr工程,所有的ide工具都支持
2.2填写坐标名,项目名不支持大写
2.3选择构建项目想要加入的功能
2.4然后下一步下一步,项目ide回去官网自动下载项目配置
2.5导入成功后的项目全貌
这样整个架子就直接搭建好了,我们只需要写自己的逻辑就可以了
2.6 resource文件夹中的目录结构
- static : 保存所有的静态资源; js css images
- templates : 保存所有的模板页面;(Spring boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freenaker,thymeleaf);
- appliocation.properties: Spring 应用的配置文件;
二.SpringBoot配置
1. SpringBoot的全局配置文件
配置文件名称固定
- application.properties
- application.yml
支持两种类型的配置文件,他们作用相同
配置文件的作用: 修改SpringBoot配置的默认值,对其默认配置进行覆盖
1.1 两种配置文件的区别
application.properties
server.port=80
application.yml
server:
port: 81