Spring Boot2(003):简要回顾“HelloWorld” web 工程
本文主要对上一篇文章 SpringBoot2(002):手动创建第1个 SpringBoot2 简单应用——“HelloWorld” web 工程 中创建的 “HelloWorld” web 工程进行简要说明和回顾,初步介绍涉及到的概念和配置。具体参考 11. Developing Your First Spring Boot Application 。本文目录结构如下:
1、注解: @RestController 和 @RequestMapping
HelloWorldExample 中的第1个注解 @RestController 是一个被熟知的原型注解(stereotype
annotation),它是一个类级别的注解,作用于整个类(的所有方法),不能单独用于某个方法上。大家都知道 @Controller 被用于处理 web 请求,比如例子中的 HelloWorldExample 类,而 @RestController 则是告诉 Spring 把对于该类中的所有请求的响应结果字符串直接返回给调用者。
注解 @RequestMapping 提供了路由信息,简单点说就是 HTTP 访问的 URL 路径,而 / 对应的 home 方法。
@RestController 和 @RequestMapping 都是 Spring MVC 中的注解。
2、注解: @EnableAutoConfiguration
@EnableAutoConfiguration 是第2个类级别的注解,用于告知如何装配 Spring。例子中的的 spring-boot-starter-web 添加了 Tomcat 和 Spring MVC,意味着这是一个 web 工程。
注:Auto-configuration 可以很好地与 Starters 协作,但是两者并没有直接关联,不使用 Starters 也能自动配置。这里使用了之后可以进行很多默认的自动装配。
3、 main 方法
main 方法是 Java 应用的入口。例子中的 main 方法通过调用 SpringApplication 的 run 方法来委托给 Spring Boot 的 SpringApplication 类。 SpringApplication 引导我们的应用程序,启动 Spring ,而 Spring 又会启动自动配置的 Tomcat web 服务器。我们需要传递 Example.class 作为 run 方法的参数来告诉 SpringApplication 哪个是主 Spring 组件。而 args 用于传递命令行的参数。就是这么简单,一个 main 方法搞定应用的启动。
4、可执行 jar 和 Java
Java 没有提供加载嵌套 jar 文件(jar 文件本身包含在一个 jar 中)的标准方法。因此按照正常的方式,如果希望发布一个自包含的应用程序,这可能会有问题。
为了解决这个问题,许多开发人员使用“uber”jar。uber jar 将应用程序的所有依赖中的所有类打包到一个单独的归档中。这种方法的问题是很难看出应用程序中有哪些类库。如果在多个 jar 中使用相同的文件名(但内容不同),也可能会出现问题。
Spring Boot 采用了一种不同的方法,允许直接嵌套 jar。pom.xml 中用了 spring-boot-maven-plugin 用于打包创建可执行的 jar。例子中使用了 spring-boot-starter-parent ,包含了用于 repackage goal 的 <executions> 配置。只要使用这个配置,就可以直接打出一个可执行的 jar 包,用于项目的直接运行,非常方便。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
以上便是一个最基本的 Spring Boot 应用会涉及到的概念和配置。可以初步看出 springboot 确实做了很多的简化和开箱即用的配置,舍弃了很多常见地 xml 配置项,大大地提升了开发效率。
PS:helloworld web工程链接:springboot2-example-helloworld
Spring Boot2(003):简要回顾“HelloWorld” web 工程的更多相关文章
- Spring Boot2(002):手动创建第1个SpringBoot2简单应用——“HelloWorld” web 工程
备注:以下内容参考 springboot 官方文档 https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/pdf/spring ...
- spring + spring mvc + mybatis + react + reflux + webpack Web工程例子
前言 最近写了个Java Web工程demo,使用maven构建: 后端使用spring + spring mvc + mybatis: 前端使用react + react-router+ webpa ...
- 多工程:基于Maven的SSM(Spring,SpringMvc,Mybatis)整合的web工程(中)
上篇用了单工程创建了SSM整合的web工程(http://www.cnblogs.com/yuanjava/p/6748956.html),这次我们把上篇的单工程改造成为多模块工程 一:创建对应的多工 ...
- 利用spring boot构建一个简单的web工程
1.选择Spring InitiaLizr, jdk选择好路径 2.设置项目信息 3.这一步是设置选择使用哪些组件,这里我们只需要选择web 4.设置工程名和路径
- Spring Boot2.0之统一处理web请求日志
试问,你的项目中,如果有几万个方法,你还这么写log.info("name"+name+",age"+age )日志么?low~ 所以用AOP呀 1.首先创建个 ...
- Spring Boot2(007):关于Spring beans、依赖注入 和 @SpringBootApplication 注解
一.关于Spring beans 和 依赖注入(Dependency Injection) spring boot 和 Spring 全家桶无缝衔接,开发过程中可以很轻松地使用 Spring 全家桶的 ...
- Spring Boot2(006):关于配置类(Configuration Classes)和配置(Configuration)
一.配置类(Configuration Classes) Spring Boot 支持基于 xml 的配置,但更偏向于使用基于 Java 的配置,通常建议使用定义有 main 方法的主 @Config ...
- Spring Boot2(005):关于代码结构
spring boot 对于工程代码结构并没有特殊得要求,但以下几个有用的最佳实践建议参考参考: 1.不鼓励而且应该避免使用 default 包 没有 package 声明的类被认为是在 defaul ...
- Spring Boot2(004):关于 Build Systems (构建系统)
Spring Boot Ref 建议使用 maven 或者 gradle 来进行依赖管理和应用构建. 一.Dependency Management(依赖管理) Spring Boot 的每个版本都会 ...
随机推荐
- python--一起来盖个时间戳!!
1.datetime import datetime print(datetime.datetime.now()) 2.time import time otherStyleTime = time.s ...
- 在Centos下单机部署kubernetes
官方安装手册 https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/ ...
- 【IMU_Ops】------III------ IMU自动化运维平台之CMDB(admin)
说明本文中所有内容仅作为学习使用,请勿用于任何商业用途.本文为原创,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. #A 首先启用admin 通过python manage.p ...
- 使用CSS3动画属性实现各种旋转跳跃
Transform字面上就是变形,改变的意思.在CSS3中transform主要包括以下几种:旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix. tran ...
- 七 异常处理的两种方式(创建全局异常处理器&自定义异常)
1 创建全局异常处理器 实现HandlerExceptionResolve接口 package com.springmvc01; import javax.servlet.http.HttpServl ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表单:复选框(Checkbox)和单选框(Radio)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Java经典算法50道题
[程序1]题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 月 数量 1 1 2 ...
- #写一个随机产生138开头手机号的程序 1.输入一个数量,产生xx条手机号 2.产生的这些手机号不能重复
import randomcount=int(input('请输入你所想要手机号数量:'))prefix='138'for i in range(count): num=random.sample(r ...
- 棋盘 || 状压DP
题意:有一个n*m的棋盘(n,m≤80,n*m≤80)要在棋盘上放k(k≤20)个棋子,使得任意两个棋子不相邻(每个棋子最多和周围4个棋子相邻).求合法的方案总数. 思路:对于每一行,如果把没有棋子的 ...
- 高斯消元几道入门题总结POJ1222&&POJ1681&&POJ1830&&POJ2065&&POJ3185
最近在搞高斯消元,反正这些题要么是我击败了它们,要么就是这些题把我给击败了.现在高斯消元专题部分还有很多题,先把几道很简单的入门题总结一下吧. 专题:http://acm.hust.edu.cn/vj ...