这是我参与11月更文挑战的第N天,活动详情查看:2021最后一次更文挑战
一个程序
我说太多,直接上图最直观
选好我们需要的依赖项,web中的和SQL中
创建好之后的目录索引
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class SpringBootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoApplication.class, args);
}
}
这个类相当于我们的代码入口,我们要在@SpringBootApplication标签添加exclude = DataSourceAutoConfiguration.class属性,因为我们最开始选择了SQL,大家也可以只选择Web就不会出现这样的问题。
我们在创建Controller包,!!!要记住SpringBootDemoApplication一定要在其他类上方。
@Controller
public class HelloDemo {
@ResponseBody
@RequestMapping("/Hello")
public String HelloDome(){
return "Hello World";
}
}
写法Spring写法相同,之后我们启动项目,
了解
pom
我们没有配置Tomcat,使用的是SpringBoot内置的Tomcat。
接下来我们了解一下SpringBoot,最先从pom文件开始
管理Spring Boot应用里面的所有依赖版本;Spring Boot的版本仲裁中心;
以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖自然需要声明版本号)
spring-boot-starter-web:
spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件;
Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器
@SpringBootApplication
Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;
@SpringBootConfiguration:Spring Boot的配置类;
标注在某个类上,表示这是一个Spring Boot的配置类;
@Configuration:配置类上来标注这个注解;
配置类 ----- 配置文件;配置类也是容器中的一个组件;@Component
@EnableAutoConfiguration:开启自动配置功能;
以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;
在@EnableAutoConfiguration下
@AutoConfigurationPackage:自动配置包
@Import(AutoConfigurationPackages.Registrar.class):
Spring的底层注解@Import,给容器中导入一个组件;导入的组件由AutoConfigurationPackages.Registrar.class;
将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器;
配置文件
- static:保存所有的静态资源; js css images;
- templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymeleaf);
- application.properties:Spring Boot应用的配置文件;可以修改一些默认设置;
YAML
k:(空格)v:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
server:
port: 8081
path: /hello
k: v:字面直接来写;
字符串默认不用加上单引号或者双引号;
"":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: "zhangsan \n lisi":输出;zhangsan 换行 lisi
'':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
对象(属性和值)、Map(键值对)
friends:
lastName: zhangsan
age: 20
//行内写法
friends: {lastName: zhangsan,age: 18}
数组(List、Set)
pets:
- cat
- dog
- pig
//行内写法
pets: [cat,dog,pig]