SpringBoot—01—简介;基本使用;
@RequestMapping(捕捉浏览器的http请求的url,和servert的uro-pattern一样)
@Controller(标识这个类是controller,和servlert的class一样)
@GetMapping(标识这个方法,处理的是get方式的http请求)
@ResponstBody(不走视图解析,直接返回数据)
@Component(是Controller和Service和repositoty的父类,就是让sping创建一个bean)
@ConfigurationPerproties(prefix=xxx),从配置文件中读取配置赋值给实体类
@Autowire,自动装配,但是具体的还是没搞懂
@valiated,做数据校验的,在类上加了个这个注解,在成员变量上加@Email则表示这个变量的值必须符合email的格式;还可以加@length等数据格式校验注解;
默认访问localhost:端口号,会默认访问项目的首页,项目的首页index.html可以放到resources的static目录下,会被自动识别。
由于templates目录下的所有页面,只能被controller层识别,所以想访问templates目录下的文件,要使用controller跳转;
所有的html元素都可以呗thyleaf接管,使用th:属性名即可,就像vue的v-bind一样就可以使用变量或者js表达式了;、
sptingboot整合mybatis,可能和spring整合mybatis一样:写好实体类和mapper层的类,然后在resource层里写好同名的mapper.xml文件,,mapper类的方法会映射到同名mapper.xml文件,然后mapper.xml文件里都是查询数据库的sql;
一、SpringBoot简介
- 使用 Spring Boot 可以创建独立的 Spring 应用程序
- 在Spring Boot中直接嵌入了Tomcat、Jetty、Undertow等Web容器,所以在使用SpringBoot
- 做 Web 开发时不需要部署 WAR 文件
- 通过提供自己的启动器(Starter)依赖,简化项目构建配置
- 尽量的自动配置 Spring 和第三方库
- 提供了生产就绪特征,如:度量指标,运行状况检查和外部化配置
- 绝对没有代码生成,也不需要 XML 配置文件
- SNAPSHOT:快照版,即正在开发的版本。
- CURRENT:最新版,但是不一定是稳定版。
- GA:General Availability,正式发布的版本
二、创建基于 Spring Boot 的项目
三、Spring Boot 项目结构介绍
1。POM 文件
继承
依赖
<dependency> <groupId>org.springframework.boot<groupId> <artifactId>spring-boot-starter-web<artifactId> <dependency>
插件
<build> <plugins> <plugin> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-maven-pluginartifactId> <plugin> <plugins> <build>
2。启动类
启动类与启动器区别:
- 启动类表示项目的启动入口
- 启动器表示 jar 包的坐标
创建启动类
/** *Spring Boot 启动类 */ @SpringBootApplication public class SpringBootDemo3Application { public static void main(String[] args){ SpringApplication.run(SpringBootDemo3Application.class,ar gs); } }
3。启动器
- spring-boot-starter;这是 Spring Boot 的核心启动器,包含了自动配置、日志和 YAML。
- spring-boot-starter-actuator;帮助监控和管理应用。
- spring-boot-starter-web;支持全栈式 Web 开发,包括 Tomcat 和 spring-webmvc。
- spring-boot-starter-amqp;通过 spring-rabbit 来支持 AMQP 协议(Advanced Message Queuing Protocol)。
- spring-boot-starter-aop;支持面向切面的编程即 AOP,包括 spring-aop 和 AspectJ。
- spring-boot-starter-artemis;通过 Apache Artemis 支持 JMS 的 API(Java Message Service API)。
- spring-boot-starter-batch;支持 Spring Batch,包括 HSQLDB 数据库。
- spring-boot-starter-cache;支持 Spring 的 Cache 抽象。
- spring-boot-starter-cloud-connectors;支持 Spring Cloud Connectors,简化了在像 Cloud Foundry 或 Heroku 这样的云平台上连接服务。
- spring-boot-starter-data-elasticsearch;支持 ElasticSearch 搜索和分析引擎,包括 spring-data-elasticsearch。
- spring-boot-starter-data-gemfire;支持 GemFire 分布式数据存储,包括 spring-data-gemfire。
- spring-boot-starter-data-jpa支持 JPA(Java Persistence API),包括 spring-data-jpa、spring-orm、Hibernate。
- spring-boot-starter-data-mongodb;支持 MongoDB 数据,包括 spring-data-mongodb。
- spring-boot-starter-data-rest;通过 spring-data-rest-webmvc,支持通过 REST 暴露 Spring Data 数据仓库。
- spring-boot-starter-data-solr;支持 Apache Solr 搜索平台,包括 spring-data-solr。
- spring-boot-starter-freemarker;支持 FreeMarker 模板引擎。
- spring-boot-starter-groovy-templates;支持 Groovy 模板引擎。
- spring-boot-starter-hateoas;通过 spring-hateoas 支持基于 HATEOAS 的 RESTful Web 服务。
- spring-boot-starter-hornetq;通过 HornetQ 支持 JMS。
- spring-boot-starter-integration;支持通用的 spring-integration 模块。
- spring-boot-starter-jdbc;支持 JDBC 数据库。
- spring-boot-starter-jersey;支持 Jersey RESTful Web 服务框架。
- spring-boot-starter-jta-atomikos;通过 Atomikos 支持 JTA 分布式事务处理。
- spring-boot-starter-jta-bitronix;通过 Bitronix 支持 JTA 分布式事务处理。
- spring-boot-starter-mail;支持 javax.mail 模块。
- spring-boot-starter-mobile;支持 spring-mobile。spring-boot-starter-mustache;支持 Mustache 模板引擎。
- spring-boot-starter-redis;支持 Redis 键值存储数据库,包括 spring-redis。
- spring-boot-starter-security;支持 spring-security。
- spring-boot-starter-social-facebook;支持 spring-social-facebook
- spring-boot-starter-social-linkedin;支持 pring-social-linkedin
- spring-boot-starter-social-twitter;支持 pring-social-twitter
- spring-boot-starter-test;支持常规的测试依赖,包括 JUnit、Hamcrest、Mockito 以及 spring-test 模块。
- spring-boot-starter-thymeleaf;支持 Thymeleaf 模板引擎,包括与 Spring 的集成。
- spring-boot-starter-velocity;支持 Velocity 模板引擎。
- spring-boot-starter-websocket;支持 WebSocket 开发。
- spring-boot-starter-ws;支持 Spring Web Services。
- spring-boot-starter-actuator;增加了面向产品上线相关的功能,比如测量和监控。
- spring-boot-starter-remote-shell;增加了远程 ssh shell 的支持。
- spring-boot-starter-jetty引入了 Jetty HTTP 引擎(用于替换 Tomcat)。
- spring-boot-starter-log4j;支持 Log4J 日志框架。
- spring-boot-starter-logging;引入了 Spring Boot 默认的日志框架 Logback。
- spring-boot-starter-tomcat;引入了 Spring Boot 默认的 HTTP 引擎 Tomcat。
- spring-boot-starter-undertow;引入了 Undertow HTTP 引擎(用于替换 Tomcat)。
4。配置文件 Spring Boot
4.1Properties 格式
4.2YAML 格式
- 大小写敏感
- 使用缩进代表层级关系
- 相同的部分只出现一次
4.3配置文件存放位置
- 当前项目根目录中
- 当前项目根目录下的一个/config 子目录中
- 项目的 resources 即 classpath 根路径中
- 项目的 resources 即 classpath 根路径下的/config 目录中
4.4配置文件加载顺序
- 当前项目根目录下的一个/config 子目录中(最高) config/application.properties config/application.yml
- 当前项目根目录中(其次) application.properties application.yml
- 项目的 resources 即 classpath 根路径下的/config 目录中(一般) resources/config/application.properties resources/config/application.yml
- 项目的 resources 即 classpath 根路径中(最后) resources/application.properties resources/application.yml
4.5配置文件中的占位符
4.6bootstrap 配置文件
- boostrap 由父 ApplicationContext 加载,比 applicaton 优先加载。
- boostrap 里面的属性不能被覆盖。
- 使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连 接到配置中心的配置属性来加载外部配置中心的配置信息。
- 一些固定的不能被覆盖的属性。
- 一些加密/解密的场景。
5。SpringBoot的核心注解
- 5.1@SpringBootApplication 是 SpringBoot 的启动类。 此注解等同于@Configuration+@EnableAutoConfiguration+@ComponentScan 的组合。
- 5.2@SpringBootConfiguration 注解是@Configuration 注解的派生注解,跟@Configuration 注解的功能一致,标注这个类是一个配置类,只不过@SpringBootConfiguration 是 springboo的注解,而@Configuration 是 spring 的注解
- 5.3@Configuration 通过对 bean 对象的操作替代 spring 中 xml 文件
- 5.4@EnableAutoConfiguration Spring Boot 自动配置(auto-configuration):尝试根据你添加的 jar 依赖自动配置你的 Spring 应用。是@AutoConfigurationPackage 和@Import(AutoConfigurationImportSelector.class) 注解的组合。
- 5.5@AutoConfigurationPackage @AutoConfigurationPackage 注解,自动注入主类下所在包下所有的加了注解的类 (@Controller,@Service 等),以及配置类(@Configuration) 5.6@Import({AutoConfigurationImportSelector.class}) 直接导入普通的类 导入实现了 ImportSelector 接口的类 导入实现了 ImportBeanDefinitionRegistrar 接口的类
- 5.7@ComponentSca组件扫描,可自动发现和装配一些 Bean。
- 5.8@ConfigurationPropertiesScan 扫描配置属性。 @EnableConfigurationProperties 注解的作 用是使用 @ConfigurationProperties 注解的类生效。