一:项目创建

个人用的是IDEA来做Demo的;

1.先创建一个空项目,然后创建一个基于Maven的java application项目;

2.创建好后配置pom.xml文件并最终reimport

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>me.silentdoer</groupId>
<artifactId>spring-boot-test</artifactId>
<version>1.0-SNAPSHOT</version> <!-- 配置parent,这个就像applicationContext.xml里配置的一样,作为其它子元素的抽象父元素,但是允许子元素重写配置 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!-- 注意大小写 -->
<version>1.5.7.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.outputEncoding>UTF-8</project.build.outputEncoding>
<java.version>1.8</java.version>
<bootgi>org.springframework.boot</bootgi>
</properties>
<dependencies>
<dependency>
<!-- 由于上面配置了parent,故这里只需要配置那些需要覆写的即可(groupId还是得有),这个包里有包括web所需的所有SpringMVC的jar包 -->
<groupId>${bootgi}</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
          <groupId>${bootgi}</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

3.创建me.silentdoer.springboot.MySpringBootApplication类

package me.silentdoer.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; /**
* @author silentdoer
* @version 1.0
* @description the description
* @date 4/12/18 7:17 PM
*/ /**
* TODO 此注解指定下面的类是springboot的启动类,然后SpringApplication.run(...)时会自动去加载依赖的jar包/模块等(如tomcat)
* 顺便还从这个注解的源码里学到了创建注解对象时还可以通过“构造方法”初始化“属性”,然后注解的声明里还可以声明内部注解
*/
@SpringBootApplication
public class MySpringBootApplication {
public static void main(String[] args){
// TODO 注意,tomcat本质上是一个java application,这里内部实际上是运行了一个tomcat
// TODO 实现原理可以看:org.apache.catalina.startup.Bootstrap.main()方法
SpringApplication.run(MySpringBootApplication.class, args);
}
}

4.创建一个Controller类为me.silentdoer.springboot.controller.TestController

package me.silentdoer.springboot.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; /**
* @author silentdoer
* @version 1.0
* @description the description
* @date 4/12/18 8:02 PM
*/
@RestController  // 使得不返回视图
public class TestController { // RESTFul api with get method.
@GetMapping("/hello") // 可以理解为RequestMethod.GET的RequestMapping,这里默认就是返回字符串而不需要viewResolver,如果需要要配置pom和application.properties
public String hello(){
return "hello.";
}
}

到这一步就可以对MySpringBootApplication run as java application了,然后浏览器里输入http://localhost:8080/hello得到输出hello.说明第一个SpringBoot程序创建成功;

二:SpringBoot中的一些特殊文件和目录

下面的内容全都是在resources下,即就是classes根目录下

1.application.properties文件,用于配置SpringBoot,但并不是applicationContext.xml一样的角色,里面可以做一些viewResolver/热部署等的配置

2.static目录(public也行),静态文件存放的目录(有那么点像webapp的角色,放在这里面的静态文件可以直接被访问)

注:比如我在static里有个test.html,那么访问http://localhost:8080/test.html最终能够访问到此静态页面,但是前提是test这个关键字不被Mapping到才最终去找static目录,即如果我有个@GetMapping("/test")那么是会优先被对应的handler方法拦截处理;

3.templates目录,存放模版文件(即jsp/freemaker之类的动态页面,不过SpringBoot官方不建议使用jsp而是默认用Thymeleaf来做动态页面)

三:SpringBoot的热部署

当我们做一些文件的更新操作时,需要重新启动项目才能令我们的更新生效。但是这种方式太浪费时间了,通过热部署可以让项目自动去探测那些变化文件并重新编译;

IDEA需要做一些额外操作,具体看:https://blog.csdn.net/wjc475869/article/details/52442484;

1.先添加devtools依赖

<dependency>
<groupId>${bootgi}</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>

2.在application.properties文件里添加

# 当classpath中有文件被devtools探测到有更新,则向SpringBoot发送restart的请求从而重启tomcat和重新加载Controller等bean
spring.devtools.restart.enabled=true

至此热部署便配置好了,只要修改了classpath中的文件都会导致SpringBoot的restart,这种方式只适合开发或测试环境,部署环境不能全部重启而应该只重新加载部分文件或redeploy,等有时间再查一下时候有相应配置(看了下有个livereload不知道是不是);

四:待续

SpringBoot初探的更多相关文章

  1. SpringBoot初探之Swagger配置

    Swagger是一个用于描述和测试restful接口的工具,只要在定义restful接口时增加一些类和方法的描述注解,通过很简单的配置就可以得到一个展示接口定义页面,也可以在页面上设置参数提交测试接口 ...

  2. SpringBoot初探(上传文件)

    学了Spring,SpringMVC,Mybatis这一套再来看SpringBoot,心里只有一句握草,好方便 这里对今天做的东西做个总结,然后在这之间先安利一个热部署的工具,叫spring-DevT ...

  3. springboot 初探 、基础及配置

    一.spring boot 的核心功能 独立运行的spring项目.内嵌servlet容器.提供starter简化maven配置.自动配置Spring.准生产的应用监控.无代码生成和xml配置二.sp ...

  4. SpringBoot初探JSP页面可能遇到的坑

    第一个坑就是依赖没有配了 网上很多依赖的配置代码 在pom.xml文件的dependencies添加以下依赖 <!-- servlet依赖 --> <dependency> & ...

  5. Springboot之初入江湖

    Hello,各位小伙伴大家好,我是小栈君. 今天的分享主题是关于Springboot主题分享,其实在写这个系列主题之前有想过一些关于分享技术的顺序问题,因为我在创建"IT干货栈"这 ...

  6. SpringBoot之旅第一篇-初探

    一.SpringBoot是什么? 微服务,应该是近年来最火的概念,越来越多的公司开始使用微服务架构,面试中被问到的微服务的概率很高,不管对技术的追求,还是为了进更好的公司,微服务都是我们开发人员的必须 ...

  7. SpringBoot整合Swagger初探

    当下的Web项目大都采用前后端分离+分布式微服务的架构.前后端分离式的开发中,前端开发人员要与后端开发人员协商通信接口,约定接口规范.因此对于开发人员来说能够维持一份及时更新且完整全面的API文档会大 ...

  8. gRPC编码初探(java)

    背景:gRPC是一个高性能.通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众 ...

  9. springboot 学习之路 8 (整合websocket(1))

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

随机推荐

  1. 学习knockoutjs轻量级的MVVM框架

    教程:knockoutjs介绍 http://www.w3cfuns.com/forum.php?mod=viewthread&tid=5598714 MVVM架构~knockoutjs实现简 ...

  2. MySQL 5.6.4 中TIMESTAMP with implicit DEFAULT value is deprecated 错误

    [Warning] TIMESTAMP with implicit DEFAULT value is deprecated.   在免安装版mysql安装过程中出现:[Warning] TIMESTA ...

  3. Thrift.1

    1. 依据thrift生成相对应语言的代码 [Ref]: http://wiki.apache.org/thrift/ThriftGeneration [Todo] 2. 如何使用生成的代码 [Ref ...

  4. Android.HowToDefineCustomView

    Custom View Errors E1 在使用自定义CustomView时,出现以下runtime error: Android.View.InflateException: Binary XML ...

  5. 探索未知种族之osg类生物---呼吸分解之advance

    回顾 我们用了两节的内容才堪堪讲解完ViewerBase::frame()函数中调用的realize()---Viewer:: realize()函数.我们简单的总结就是Viewer:: realiz ...

  6. POJ 3041.Asteroids 最小顶点覆盖

    Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22905   Accepted: 12421 Descr ...

  7. POJ 3169.Layout 最短路

    Layout Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11612   Accepted: 5550 Descripti ...

  8. tp5查看版本

    5.0 base.php 5.1 echo \think\facade\App::version();//用这行代码查看版本

  9. memcache的add和set区别

    add可以做memcache锁 使用场景:用户兑换商品,在网络不好的情况下,点击多次,set会将多次提交全纪录下来,add只会记录一次

  10. Eclipse创建Spring项目 未完

    使用的软件及版本 1)Eclipse:Eclipse Java EE IDE for Web Developers :Version: 2018-09 (4.9.0) 2)JDK:java versi ...