SpringBoot总结,都进来看看吧!!!

SpringBoot

一、什么是SpringBoot

​ SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架(指的就是springframework)的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件,所以SringBoot是一个服务与框架的框架,服务范围是简化配置文件,所以从本质上来说,SpringBoot其实就是Spring框架的另一种表现形式。

二、SpringBoot特征

  • 使用springBoot可以创建独立的Spring应用程序
  • 在SpringBoot中直接嵌入了Tomcat、Jetty、Undertow等Web容器,所以在使用SpringBoot做Web开发时不需要部署WAR文件
  • 通过提供自己的启动器(Starter)依赖,简化项目构建配置
  • 尽量的自动配置Spring和第三方库
  • 提供了生产就绪特征,如:度量指标,运行状况检查和外部化配置
  • 绝对没有代码生成,也不需要XML配置文件

三、SpringBoot项目结构介绍

1、POM文件

1.1继承

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

SpringBoot的父级依赖,只有继承它项目才是SpringBoot项目。

spring-boot-starter-parent是一个特殊的starter,他用来提供相关的Maven默认依赖。使用它之后,常用的包的依赖可以省去version标签

1.2依赖

  <dependency>
 	 <groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
 </dependency>       

启动器依赖

1.3插件

 <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
</plugin>

spring-boot-maven-plugin插件是将springboot的应用程序打包成jar包的插件。将所有应用启动运行所需的jar包都包含进来,从逻辑上将具备独立运行的条件。当运行“mvn package”进行打包后,使用“java-jar”命令就可以直接运行

2、启动类

Spring Boot的启动类的作用是Spring Boot项目,是基于Main方法来运行的。

注意:启动类在启动时会做注解扫描(@Controller、@Service、@Repository),扫描位置为同包或者子包下的注解,所以启动类的位置应放于包的根下。

2.1启动类与启动器的区别

  • ​ 启动类表示项目的启动入口
  • ​ 启动器表示jar包的坐标

3、启动器

SpringBoot将所有的功能场景都抽取出来,做一个个的starter(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来,要用什么功能就导入什么场景,在jar包管理上非常方便,最终实现一站式开发

4、配置文件

SpringBoot提供一个名称为application的全局配置文件,支持两种格式properties格式与YAML格式

4.1配置文件中的占位符

4.1.1语法:${}
4.1.2占位符的作用
  • “${}”中可以获取框架提供的方法中的值
  • 占位符可以获取配置文件中的键的值赋给另一个键作为值

5、SpringBoot的核心注解

5.1@SpringBootApplication

是SpringBoot的启动类

此注解等同于@Configuration+EnableAutoConfiguration+@ComponentScan的组合

5.2@SpringBootConfiguration

@SpringBootConfiguration注解是@Confuguration注解的派生注解,跟@Configuration注解的功能一致,标注这个类是一个配置类,只不过@SpringBootConfiguration是springboot的注解,而@Configuration是spring的注解

5.3@Configuration

通过对bean对象的操作替代spring中的xml文件

5.4@EnableAutoConfiguration

SpringBoot自动配置:尝试根据你添加的jar依赖自动配置你的spring应用,是@AutoConfigurationPackage和@Import注解的组合

5.5@AutoConfigurationPackage

@AutoConfigurationPackage注解,自动注入主类下所在包下所有加了注解的类,以及配置类

5.6@Import

直接导入普通类

导入实现ImportSelector接口的类

导入实现了ImportBeanDefinitionRegistrar接口的类

5.7@ComponentScan

组件扫描,可自动发现和装配一些Bean

6、SpringBoot在Cobtroller中常用注解

6.1@RestController

@RestController相当于@Controller+@ResponseBody注解。如果使用@RestController注解Controller中的方法无法返回页面,相当于在方法上面自动加了@ResponseBody注解,所以没办法跳转并传输数据到另一个页面,返回的内容就是return里的内容。

6.2@GetMapping

@GetMapping注解是@RequestMapping(method=RequestMethod.GET)的缩写

6.3@PostMapping

@PostMapping注解是@RequestMapping(method=RequestMethod.POST)的缩写

6.4PutMapping

@PutMapping注解是@RequestMapping(method=RequestMethod.PUT)的缩写

6.5@DeleteMapping

@DeleteMapping注解是@RequestMapping(method=RequestMethod.DELETE)的缩写

7、SpringBoot访问静态资源

​ 在Springboot项目中没有我们之前常规web开发的WebContent(WebApp),它只有src目录。在src/main/resoueces下有两个文件夹。static和templates。SpringBoot默认在static目录中存放静态页面,而templates中放动态页面

7.1static目录

​ SpringBoot通过classpath/static目录访问静态资源。注意存放静态资源的目录名称必须是static

7.2templates目录

在SpringBoot中不推荐使用jsp作为视图层技术,而是默认使用Thymeleaf来做动态页面,Thymeleaf目录就是是存放Thymeleaf的页面

8、SpringBoot整合Thymeleaf

8.1Thymeleaf介绍

​ Thymeleaf的主要目标是将优雅的自然模板带到开发工作流程中,并将HTML在浏览器中正确显示,并且可以作为静态原型,让开发团队能更容易地协作。Thymeleaf能够处理HTML,XML,JavaScript,Css甚至纯文本。

​ 长期以来,jsp在视图领域有非常重要的地位,随着时间的变迁,出现了一位新的挑战者:Thymeleaf,Thymeleaf是原生的,不依赖于标签库,他能子啊接受原始HTML的地方进行编辑和渲染,因为他没有与Servlet规范耦合,因此Thymeleaf模板能进入jsp所无法涉足的领域

8.2Thymeleaf语法讲解

命令空间:xmlns:th=“http://www.thymeleaf.org”

8.2.1字符串与变量输出操作
th:text
在页面中输出值
th:value
可以将一个值放入到input标签的value中
8.2.2字符串操作

Thymeleaf提供了一些内置对象,内置对象可直接在模板中使用。这些对象是以#引用的

使用内置对象的语法

  • 引用内置对象需要引用#
  • 大部分内置对象的名称都以s结尾。如:string、numbers、dates
${#strings.isEmpty(key)}
判断字符串是否为空,如果为空返回true,否则返回flase
${#strings.contains(msg,‘T’)}
判断字符串是否包含指定的子串,如果包含返回true,否则返回false
${#string.startsWith(msg,‘a’)}
判断当前当前字符串是否以子串开头,如果是返回true,否则返回false
${#string.endWith(msg,‘a’)}
判断当前当前字符串是否以子串开头,如果是返回true,否则返回false
${#string.length(msg)}
返回字符串的长度
${#strings.indexOf(msg,‘h’)}
查找子串的位置,并返回改子串的下表,如果没找到则返回-1
${#strings.substring(msg,2,5)}
截取子串。用户与jdk String类下SubString方法相同

8.2.3日期格式化处理

${#dates.format(key)}
格式化日期,默认的以浏览器默认语言为格式化标准
${#dates.format(key,‘yyyy-MM-dd’)}
按照自定义格式做日期转换
${#dates.year(key)} 取年
${#dates.month(key)} 取月
${#dates.day(key)} 取日

8.2.4条件判断

th:if
条件判断
th:switch/th:case
th:switch/th:case与java中的switch语句等效,有条件地显示匹配的内容。如果有多个匹配结果只选择第一个显示。
th:case=“*”表示Java中的switch的default,即没有case的值为true时则显示th:case= “ *” 的内容

8.2.5迭代遍历

th:each
迭代器,用于循环迭代集合(迭代List)
8.2.5.1th:each状态变量
  • index:当前迭代器的索引从0开始
  • count:当前迭代对象的计数从1开始
  • size:被迭代对象的长度
  • odd/even布尔值,当前循环是否偶数。奇数从0开始
  • first布尔值:当前循环的是否是第一条,如果是返回true否则返回false
  • last:布尔值,当前循环的是否是最后i一条,如果是则返回true否则返回false

8.2.6操作域对象

HttpServletRequest

request.setAttribute(“req”,“HttpServletRequest”);

HttpSession

request.getSession().setAttribute(“sess”,HttpSession)

ServletContext

request.getsession().getServletContext().serAttribute(“app”,“Application”)

8.2.7URL表达式

8.2.7.1语法:

在Thymeleaf中的URL表达式的语法格式为@{}

8.2.7.2URL类型

绝对路径

绝对路径

相对路径

相对于当前项目的根
相对路径
相对于服务器的根
相对于服务器的根

你可能感兴趣的:(框架,spring,boot,spring,java)