本文主要对上一篇文章  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 工程的更多相关文章

  1. Spring Boot2(002):手动创建第1个SpringBoot2简单应用——“HelloWorld” web 工程

    备注:以下内容参考 springboot 官方文档 https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/pdf/spring ...

  2. spring + spring mvc + mybatis + react + reflux + webpack Web工程例子

    前言 最近写了个Java Web工程demo,使用maven构建: 后端使用spring + spring mvc + mybatis: 前端使用react + react-router+ webpa ...

  3. 多工程:基于Maven的SSM(Spring,SpringMvc,Mybatis)整合的web工程(中)

    上篇用了单工程创建了SSM整合的web工程(http://www.cnblogs.com/yuanjava/p/6748956.html),这次我们把上篇的单工程改造成为多模块工程 一:创建对应的多工 ...

  4. 利用spring boot构建一个简单的web工程

    1.选择Spring InitiaLizr,    jdk选择好路径 2.设置项目信息 3.这一步是设置选择使用哪些组件,这里我们只需要选择web 4.设置工程名和路径

  5. Spring Boot2.0之统一处理web请求日志

    试问,你的项目中,如果有几万个方法,你还这么写log.info("name"+name+",age"+age )日志么?low~ 所以用AOP呀 1.首先创建个 ...

  6. Spring Boot2(007):关于Spring beans、依赖注入 和 @SpringBootApplication 注解

    一.关于Spring beans 和 依赖注入(Dependency Injection) spring boot 和 Spring 全家桶无缝衔接,开发过程中可以很轻松地使用 Spring 全家桶的 ...

  7. Spring Boot2(006):关于配置类(Configuration Classes)和配置(Configuration)

    一.配置类(Configuration Classes) Spring Boot 支持基于 xml 的配置,但更偏向于使用基于 Java 的配置,通常建议使用定义有 main 方法的主 @Config ...

  8. Spring Boot2(005):关于代码结构

    spring boot 对于工程代码结构并没有特殊得要求,但以下几个有用的最佳实践建议参考参考: 1.不鼓励而且应该避免使用 default 包 没有 package 声明的类被认为是在 defaul ...

  9. Spring Boot2(004):关于 Build Systems (构建系统)

    Spring Boot Ref 建议使用 maven 或者 gradle 来进行依赖管理和应用构建. 一.Dependency Management(依赖管理) Spring Boot 的每个版本都会 ...

随机推荐

  1. 理解JS中的回调(Callback)函数

    今天写代码时写了一个函数,想实现Nodejs查询pgSQL的数据查出来并把结果作为返回值,结果发现拿不到这个值,查了下资料才恍然大悟,这是Nodejs的最大特性--非阻塞! 查询数据操作作为比较消耗资 ...

  2. node.js绑定监听事件EventEmitter类

    Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,如下: // 引入 events 模块 var events = r ...

  3. Python 之并发编程之进程上(基本概念、并行并发、cpu调度、阻塞 )

    一: 进程的概念:(Process) 进程就是正在运行的程序,它是操作系统中,资源分配的最小单位. 资源分配:分配的是cpu和内存等物理资源 进程号是进程的唯一标识 同一个程序执行两次之后是两个进程 ...

  4. 为什么在/etc/profile中设定的环境变量,对子进程可见

    系统启动时有个过程是启动初始shell,执行一些固定目录下的脚本,比如/etc/profile.....(系统启动时执行一次),我们在这些文件中添加并导出环境变量 这样shell启动的其它的进程就具备 ...

  5. Day3-I-Squares POJ2002

      A square is a 4-sided polygon whose sides have equal length and adjacent sides form 90-degree angl ...

  6. 【高软作业3】:原型化系统 DevTools

    原型化系统:DevTools       密码:lcx 1. 这是一个什么样的平台? DevTools,可译为:开发者工具库.初衷是聚集各类开发工具,方便开发者获取:此外,大家可以分享自己的工具库与工 ...

  7. [Struts]Token 使用及原理

      Struts Token 使用 1,先在一个Action中,调用saveToken(HttpServletRequest request)方法.然后转向带有表单的JSP页面. 2,在JSP页面提交 ...

  8. java string常用的占位符形式

        自己在这里总结了三种占位符形式:看下面代码即可 String stringFormat  = "lexical error at position %s, encountered % ...

  9. spark on yarn container分配极端倾斜

    环境:CDH5.13.3  spark2.3 在提交任务之后,发现executor运行少量几台nodemanager,而其他nodemanager没有executor分配. 测试环境通过spark-s ...

  10. 【Unity】鼠标指向某物体,在其上显示物体的名字等等等等信息

    之前一直用NGUI HUD Text插件做这个功能,感觉一个小功能就导一个插件进来简直丧心病狂.然后就自己写了一个~ Camera cam;//用于发射射线的相机 Camera UIcam;//UI层 ...