Spring-boot入门01
Spring Boot是用来简化Spirng应用开发,约定大于配置,去繁从简的框架,是对Spring整个技术站的大整合.是J2EE开发的一站式解决方案.
Spring boot是对Spring的一个再次封装,所以说学习Springboot一定要对Spring已经掌握.
Spring-boot优点:
- 可以快速创建独立运行的Spring项目.
- 使用嵌入式的Servlet容器,应用不需要打成WAR包
- starters自动依赖与版本控制
- 大量的自动配置,简化开发,也可以修改默认值.
- 无需配置XML无代码生成,开箱及用
- 准生产环境的运行时应用监控
- 与云计算天然集成
1.首先创建一个简单的SpringBoot项目HelloWorld
环境搭建
- Eclipse(带sts插件)2018-12
- Maven3.3.9
- Spring boot2.1.3
- jdk1.8
sts插件在线安装
Help -> Eclipse Marketplace
Search,选择搜索(find)Spring Tool Suite (STS) for Eclipse插件,安装不同的eclipse版本对应的sts不同我这个是以下版本:
1.新建项目选则创建一个Springboot项目
想要启动这个项目直接使用main方法启动
pom文件:
<?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 http://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.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.ange</groupId>
<artifactId>HelloWorld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>HelloWorld</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-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.编写一个controller
package com.ange.start;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("helloWorld")
public String helloWorld() {
return "HelloWorld";
}
}
3.启动启动类;
4.网页访问一个简单的helloworld项目完成
2.HelloWord项目分析:
1.POM文件分析
1.helloworld依赖的父项目
在这个helloword项目中它有一个一个父项目spring-boot-starter-parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
而spring-boot-starter-paren这个项目也有一个父项目spring-boot-dependencies
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
spring-boot-dependencies是spring-boot的版本仲裁中心,它用来管理springboot的所有依赖;所以以后我们导入的依赖是默认不需要写版本的(没有在spring-boot-dependencies中管理的除外);
2.helloworld导入的启动器
helloworld除了它的父项目之外我们还导入了依赖spring-boot-starter-web
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
spring-boot-starter-web:
我们可以把这个依赖拆成两部分,一个是spring-boot-starter,另一个是web
spring-boot-starter:它是spring-boot场景启动器它帮我们导入了web模块正常运行时所依赖的组件.
在Springboot中将所有的功能场景都抽出出来做成一个个starters(启动器),我们只需要在项目中引入这些启动器(starters)相关场景的所有依赖都会被导入进来,要什么功能导入什么场景的启动器即可
其他启动器可以参考springboot官方网站:
https://docs.spring.io/spring-boot/docs/1.5.13.RELEASE/reference/htmlsingle/#using-boot-starter
web则表示它的功能场景
2:主程序类,主入口类分析
package com.ange.start;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args) {
SpringApplication.run(HelloWorldApplication.class, args);
}
}
@SpringBootApplication:这个注解标注在某个类上说明这个类是springboot的主配置类,Springboot就应该运行这个类的main方法启动springboot项目;
@SpringBootApplication是一个复合注解,包括@ComponentScan,@SpringBootConfiguration,@EnableAutoConfiguration.
- @SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。
- @EnableAutoConfiguration的作用启动自动的配置,@EnableAutoConfiguration注解的意思就是Springboot根据你添加的jar包来配置你项目的默认配置.
- @ComponentScan,扫描当前包及其子包下被@Component,@Controller,@Service,@Repository注解标记的类并纳入到spring容器中进行管理。是以前的context:component-scan(以前使用在xml中使用的标签,用来扫描包配置的平行支持)。所以本demo中的User为何会被spring容器管理。