# springboot_2002
**Repository Path**: manalay/springboot_2002
## Basic Information
- **Project Name**: springboot_2002
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 13
- **Created**: 2021-11-09
- **Last Updated**: 2024-12-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# springboot 学习
## springboot 是什么
https://spring.io/projects/spring-boot#overview
还是属于spring 体系的一个框架
但是不是新框架,而是一个集成了各种常用内容的框架。
在我们使用spring 的时候,不需要引入一堆的依赖。
相对于ssm集成内容,spring boot 省掉了大量的配置文件,省掉了tomcat
省掉了引入各种jar
## 一个简单的开始
新建一个文件夹,加入pom.xml
```
4.0.0
com.example
myproject
0.0.1-wangzeng
org.springframework.boot
spring-boot-starter-parent
2.1.6.RELEASE
org.springframework.boot
spring-boot-starter-web
org.projectlombok
lombok
org.springframework.boot
spring-boot-maven-plugin
```
#### 这里关于spring boot 的一共两个部分
```
org.springframework.boot
spring-boot-starter-parent
2.1.6.RELEASE
```
这个部分我们来看一看源码:
```
4.0.0
org.springframework.boot
spring-boot-dependencies
2.1.6.RELEASE
../../spring-boot-dependencies
spring-boot-starter-parent
pom
Spring Boot Starter Parent
Parent pom providing dependency and plugin management for applications
built with Maven
https://projects.spring.io/spring-boot/#/spring-boot-starter-parent
UTF-8
1.8
@
${java.version}
UTF-8
${java.version}
true
${basedir}/src/main/resources
**/application*.yml
**/application*.yaml
**/application*.properties
${basedir}/src/main/resources
**/application*.yml
**/application*.yaml
**/application*.properties
org.jetbrains.kotlin
kotlin-maven-plugin
${kotlin.version}
compile
compile
compile
test-compile
test-compile
test-compile
${java.version}
true
maven-compiler-plugin
true
maven-failsafe-plugin
integration-test
verify
${project.build.outputDirectory}
maven-jar-plugin
${start-class}
true
maven-war-plugin
${start-class}
true
org.codehaus.mojo
exec-maven-plugin
${start-class}
maven-resources-plugin
${resource.delimiter}
false
pl.project13.maven
git-commit-id-plugin
revision
true
yyyy-MM-dd'T'HH:mm:ssZ
true
${project.build.outputDirectory}/git.properties
org.springframework.boot
spring-boot-maven-plugin
repackage
repackage
${start-class}
maven-shade-plugin
package
shade
META-INF/spring.handlers
META-INF/spring.factories
META-INF/spring.schemas
${start-class}
org.springframework.boot
spring-boot-maven-plugin
2.1.6.RELEASE
true
true
*:*
META-INF/*.SF
META-INF/*.DSA
META-INF/*.RSA
org.eclipse.m2e
lifecycle-mapping
1.0.0
org.codehaus.mojo
flatten-maven-plugin
[1.0.0,)
flatten
org.apache.maven.plugins
maven-checkstyle-plugin
[3.0.0,)
check
```
以上内容
- 定义了 Java 编译版本,如上为 1.8。
- 使用 UTF-8 格式编码
- maven源文件和目标文件编译的版本
- 执行打包操作的配置
- 自动化的资源过滤
- 自动化的插件配置
可以看到,是省掉了大量的配置,并且指定了后续内容的版本,可以在依赖引入时省略
### 第二部分
```
org.springframework.boot
spring-boot-starter-web
```
源码:
```
4.0.0
org.springframework.boot
spring-boot-starters
2.1.6.RELEASE
org.springframework.boot
spring-boot-starter-web
2.1.6.RELEASE
Spring Boot Web Starter
Starter for building web, including RESTful, applications using Spring
MVC. Uses Tomcat as the default embedded container
https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-web
Pivotal Software, Inc.
https://spring.io
Apache License, Version 2.0
https://www.apache.org/licenses/LICENSE-2.0
Pivotal
info@pivotal.io
Pivotal Software, Inc.
https://www.spring.io
scm:git:git://github.com/spring-projects/spring-boot.git/spring-boot-starters/spring-boot-starter-web
scm:git:ssh://git@github.com/spring-projects/spring-boot.git/spring-boot-starters/spring-boot-starter-web
https://github.com/spring-projects/spring-boot/spring-boot-starters/spring-boot-starter-web
Github
https://github.com/spring-projects/spring-boot/issues
org.springframework.boot
spring-boot-starter
2.1.6.RELEASE
compile
org.springframework.boot
spring-boot-starter-json
2.1.6.RELEASE
compile
org.springframework.boot
spring-boot-starter-tomcat
2.1.6.RELEASE
compile
org.hibernate.validator
hibernate-validator
6.0.17.Final
compile
org.springframework
spring-web
5.1.8.RELEASE
compile
org.springframework
spring-webmvc
5.1.8.RELEASE
compile
```
可以看到,指定了各种依赖
tomcat sprinMVC hibernate 验证,json 等等,一系列内容。
这两个内容,已经解决了我们项目大部分的配置管理问题。
## 创建一个项目
在建立了文件夹和pom文件之后,我们可以直接使用命令创建
> mvn package
这样我们就可以得到一个jar包了
### 使用idea 创建项目
打开后,可以选文件->new project - maven project
然后复制上面pom中的内容替换当前的pom就可以
## 编码
### 程序入口:
在所有子包之上,建立启动类,原因是启动类会扫描当前包以及当前包的子包
如果其它的代码不在当前包与子包范围,那就无法识别。
```
@SpringBootApplication
public class App{
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
```
代码并不复杂,一个注解,一个静态调用。
@SpringBootApplication
是一个复合注解,包括了很多内容:
```
@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 {
@AliasFor(annotation = EnableAutoConfiguration.class)
Class>[] exclude() default {};
@AliasFor(annotation = EnableAutoConfiguration.class)
String[] excludeName() default {};
@AliasFor(annotation = ComponentScan.class, attribute = "basePackages")
String[] scanBasePackages() default {};
@AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")
Class>[] scanBasePackageClasses() default {};
}
```
可以看到里面包括了配置读取自动扫描等等注解内容。
也可以理解 为一个简化后的注解。作用是扫描子包,扫描配置文件等操作。
## Controller
控制器 作为MVC的C的部分
可以单独使用注解了
普通的Controller如果需要返回实体或json需要指定responseBody
所以以下案例,都以RestController来完成。