SpringBoot初探
一:项目创建
个人用的是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初探的更多相关文章
- SpringBoot初探之Swagger配置
Swagger是一个用于描述和测试restful接口的工具,只要在定义restful接口时增加一些类和方法的描述注解,通过很简单的配置就可以得到一个展示接口定义页面,也可以在页面上设置参数提交测试接口 ...
- SpringBoot初探(上传文件)
学了Spring,SpringMVC,Mybatis这一套再来看SpringBoot,心里只有一句握草,好方便 这里对今天做的东西做个总结,然后在这之间先安利一个热部署的工具,叫spring-DevT ...
- springboot 初探 、基础及配置
一.spring boot 的核心功能 独立运行的spring项目.内嵌servlet容器.提供starter简化maven配置.自动配置Spring.准生产的应用监控.无代码生成和xml配置二.sp ...
- SpringBoot初探JSP页面可能遇到的坑
第一个坑就是依赖没有配了 网上很多依赖的配置代码 在pom.xml文件的dependencies添加以下依赖 <!-- servlet依赖 --> <dependency> & ...
- Springboot之初入江湖
Hello,各位小伙伴大家好,我是小栈君. 今天的分享主题是关于Springboot主题分享,其实在写这个系列主题之前有想过一些关于分享技术的顺序问题,因为我在创建"IT干货栈"这 ...
- SpringBoot之旅第一篇-初探
一.SpringBoot是什么? 微服务,应该是近年来最火的概念,越来越多的公司开始使用微服务架构,面试中被问到的微服务的概率很高,不管对技术的追求,还是为了进更好的公司,微服务都是我们开发人员的必须 ...
- SpringBoot整合Swagger初探
当下的Web项目大都采用前后端分离+分布式微服务的架构.前后端分离式的开发中,前端开发人员要与后端开发人员协商通信接口,约定接口规范.因此对于开发人员来说能够维持一份及时更新且完整全面的API文档会大 ...
- gRPC编码初探(java)
背景:gRPC是一个高性能.通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众 ...
- springboot 学习之路 8 (整合websocket(1))
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
随机推荐
- day 26 初识进程,验证客户端合法性
验证客户端合法性: # 1.需要认证 # 程序和用户打交道的时候才会用到用户认证 # 对所有的客户端进行统一的认证 # 我现在要做的事情 # 写一个server端 # 写一个client端 特殊的 符 ...
- Debug和汇编编译器masm对指令的不同处理
我们在Debug和源程序中写入同样形式的指令 : "mov al,[0]","mov bl,[1]","mov cl,[2]"," ...
- Android TV开发 焦点控制
转载:http://www.eoeandroid.com/thread-264177-1-1.html 最近在做一款基于Android的互联网电视客户端,开发与phone/pad差不多,但是有一个值得 ...
- mysql 单表查询
一 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 ...
- nginx与php-fpm原理
一.正向代理与反向代理 1.正向代理:访问google.com google.com vpn需要FQ才能访问 vpn 对于我们来说是可以感知到的(我们连接vpn),但对于google服务器是不知道 ...
- 那些年我们遇到的坑(1)-Description Resource Path Location Type Archive for required library
在下载JAR包过程中遇到了错误,根据提示找到maven仓库报错的目录,将该目录下的所有文件删除重新下载即可
- SoftwareEngineering.APIDesign.iOS
API Design for iOS/Mac (Objective-c Edition) 1. UI Control Library API的设计 和已有组件保持一致(例如: 使用标准的API, 模型 ...
- nested exception is java.lang.NoClassDefFoundError: org/springframework/dao/support/PersistenceExceptionTranslator
该问题是少了一个spring-tx-的jar包,把该包加入到buildpath中就行了. 参考链接:http://blog.csdn.net/Rongbo_J/article/details/4666 ...
- Java中的权限修饰符
What:访问控制权限是可以设置代码的访问范围. Where:访问权限既可以修饰类中的属性,又可以修饰类中的方法,而public和default还可以修饰类. 在同一个java文件里,公有类有且仅有一 ...
- Lftp 简单使用步骤
有一用户需要在Linux上面将数据备份至存储上面,但是不支持挂载. 只可以FTP. 找了下,Lftp 这款FTP Client 满足用户的需求. 相关资料参考:http://blog.chinauni ...