Spring Boot
todo
webFlux
Spring Boot webFlux
第三方资料
long77
http://www.cnblogs.com/cnblog-long/category/1042057.html
博客对应源码
https://github.com/lianggzone/springboot-action
怎么看文档
先指南
每个章节 , 一般只看关注的章节
非常赶时间的话 , 直接根据问题看文档
‘How-to’ guides
下载源码
rimraf spring-boot-source && git clone --depth 1 https://github.com/spring-projects/spring-boot.git
文件名太长
rimraf spring-boot-source && git clone --depth 1 https://github.com/spring-projects/spring-boot.git
Cloning into 'spring-boot'...
remote: Counting objects: 8053, done.
remote: Compressing objects: 100% (5295/5295), done.
remote: Total 8053 (delta 2601), reused 4671 (delta 1342), pack-reused 0
Receiving objects: 100% (8053/8053), 5.49 MiB | 233.00 KiB/s, done.
Resolving deltas: 100% (2601/2601), done.
error: unable to create file spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/DependencyManagementPluginActionIntegrationTests-helpfulErrorWhenVersionlessDependencyFailsToResolve.gradle: Filename too long
Checking out files: 100% (5201/5201), done.
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry the checkout with 'git checkout -f HEAD'
13
13
1
rimraf spring-boot-source && git clone --depth 1 https://github.com/spring-projects/spring-boot.git
2
Cloning into 'spring-boot'...
3
remote: Counting objects: 8053, done.
4
remote: Compressing objects: 100% (5295/5295), done.
5
remote: Total 8053 (delta 2601), reused 4671 (delta 1342), pack-reused 0
6
Receiving objects: 100% (8053/8053), 5.49 MiB | 233.00 KiB/s, done.
7
Resolving deltas: 100% (2601/2601), done.
8
error: unable to create file spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/DependencyManagementPluginActionIntegrationTests-helpfulErrorWhenVersionlessDependencyFailsToResolve.gradle: Filename too long
9
Checking out files: 100% (5201/5201), done.
10
fatal: unable to checkout working tree
11
warning: Clone succeeded, but checkout failed.
12
You can inspect what was checked out with 'git status'
13
and retry the checkout with 'git checkout -f HEAD'
常用依赖
<!-- region QueryDSL -->
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
</dependency>
<!-- endregion QueryDSL -->
12
12
1
<!-- region QueryDSL -->
2
3
<dependency>
4
<groupId>com.querydsl</groupId>
5
<artifactId>querydsl-jpa</artifactId>
6
</dependency>
7
8
<dependency>
9
<groupId>com.querydsl</groupId>
10
<artifactId>querydsl-apt</artifactId>
11
</dependency>
12
<!-- endregion QueryDSL -->
必备插件
# 在控制台里打印 MyBatis SQL语句 ( 访问的是自己的数据库 ) , 方便开发阶段调试
#log4j.logger.druid.sql.Statement = DEBUG
server.port = 8011
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- 热更新 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- project 下 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
28
28
1
<!-- Lombok -->
2
<dependency>
3
<groupId>org.projectlombok</groupId>
4
<artifactId>lombok</artifactId>
5
</dependency>
6
7
<!-- 热更新 -->
8
<dependency>
9
<groupId>org.springframework.boot</groupId>
10
<artifactId>spring-boot-devtools</artifactId>
11
<optional>true</optional>
12
</dependency>
13
14
<build>
15
<plugins>
16
<plugin>
17
<groupId>org.springframework.boot</groupId>
18
<artifactId>spring-boot-maven-plugin</artifactId>
19
</plugin>
20
</plugins>
21
</build>
22
23
<!-- project 下 -->
24
<properties>
25
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
26
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
27
<java.version>1.8</java.version>
28
</properties>
归类到 spring,不是Spring Boot 独有的
只有两个人可以用聊天室,因为配置
但另一个大家都能收得到
这个无视 9001端口 代码中没出现
各种依赖,应该让Maven 管理,不然版本各种问题,而且互相拷贝不方便
基于gradled
2.15开始构建
问题
修改内置的 Tomcat 端口号
在application.properties中添加
server.port=8011
可将tomcat默认端口号修改为8011
信息: validateJarFile(E:\web\WebSocketProject\WebSocketJavaProject\target\WebsocketHome\WEB-INF\lib\javax.el-api-3.0.0.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/el/Expression.class
WEB-INF/lib/servlet-api.jar not loaded
http://www.cnblogs.com/zdz8207/p/java-tomcat-servlet-api-jar-not-loaded.html
把
H:\Software\Tomcat\apache-tomcat-7.0.34\lib
下的 servlet-api
拷贝到项目里
E:\web\daJin\WebRoot\WEB-INF\lib
依赖包导入
配置一下,注意web的root根目录 参考 http://www.2cto.com/kf/201608/539241.html
我同时用第1种和第2种 方法
导入,用第1种
配置,用第2种
https://github.com/roncoo/spring-boot-demo.git
最好的方式,只有项目源代码,把IDE的东西删掉,同一款IDE的配置文件很可能不通用,不同IDE之间更可能不通用
E:\web\daJin\out\artifacts\daJin_Web_exploded
E:\web\SpringBootInit
默认用Hibernate 5.0.x
By default, Spring Boot uses Hibernate 5.0.x. However it’s also possible to use 4.3.x or 5.2.x if you wish. Please refer to the Hibernate 4 and Hibernate 5.2 samples to see how to do so.
Error creating bean with name 'servletContainer'
知识点
配置文件
http://blog.csdn.net/forezp/article/details/70437576
多个环境配置文件
创建项目的几种方法:
IDE+插件,IDEA 自带插件;eclipse+插件
在线web创建项目 https://start.spring.io/
命令行工具,Spring CLI
手动从零开始,创建Maven(从新建pom.xml文件开始)或者Gradle 项目
IDE+插件,IDEA 自带插件;eclipse+插件
在线web创建项目 https://start.spring.io/
命令行工具,Spring CLI
手动从零开始,创建Maven(从新建pom.xml文件开始)或者Gradle 项目
启动过程中
Tomcat started on port(s): 8011 (http)
提示后端端口号
即使有
Started Application in 28.003 seconds (JVM running for 37.966)
也可能还没启动成功 , 要再等一下
工具
Lombok 自动生成 setter 和 getter
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
5
5
1
<!-- Lombok -->
2
<dependency>
3
<groupId>org.projectlombok</groupId>
4
<artifactId>lombok</artifactId>
5
</dependency>
Spring CLI
SdkMan 不提供win版本
http://sdkman.io/
官网也很难访问
SDKMAN! (The Software Development Kit Manager) can be used for managing multiple versions of various binary SDKs, including Groovy and the Spring Boot CLI.
热部署(热更新) 工具 spring-boot-devtools
spring-boot-devtools 热更新 "依赖"
pom里添加依赖(参考博客 http://www.cnblogs.com/java-zhao/p/5502398.html)
<!-- 热更新 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
6
6
1
<!-- 热更新 -->
2
<dependency>
3
<groupId>org.springframework.boot</groupId>
4
<artifactId>spring-boot-devtools</artifactId>
5
<optional>true</optional>
6
</dependency>
ctrl+F9 手动编译一下,然后它会把项目热更新( 也会自动部署 )。
应该有办法设置成一改动 Java 文件就自动(编译+部署),但我觉得应该手动控制是否马上热部署。全都自动会浪费 CPU 资源, 我想多改几行再一起热更新
不是 ctrl +F10 热更新快捷键
IDEA 左下角出现这个说明成功,有可能还要多等一下
spring-boot-maven-plugin 热更新 "插件"
如果上面的方法不行 ( 方法指的是添加 <artifactId>spring-boot-devtools</artifactId> 依赖 ),就在它的基础上加上这个插件
在 <project> 标签下的 <build> 下的 <plugins> 下添加
build 和 dependencies 同一级别
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 如果没有该项配置, spring-boot-devtools 可能失效, 即无法热更新 -->
<fork>true</fork>
</configuration>
</plugin>
1
<plugin>
2
<groupId>org.springframework.boot</groupId>
3
<artifactId>spring-boot-maven-plugin</artifactId>
4
<configuration>
5
<!-- 如果没有该项配置, spring-boot-devtools 可能失效, 即无法热更新 -->
6
<fork>true</fork>
7
</configuration>
8
</plugin>
完整 :
在 <project> 下添加
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
1
<build>
2
3
<plugins>
4
5
<plugin>
6
<groupId>org.springframework.boot</groupId>
7
<artifactId>spring-boot-maven-plugin</artifactId>
8
<configuration>
9
<fork>true</fork>
10
</configuration>
11
</plugin>
12
13
</plugins>
14
15
</build>
可能要添加
<version>1.5.1.RELEASE</version>
如果添加 spring-boot-devtools 依赖的话,只是重新编译,那编译能成功,但没有热部署
注意
{
有时候想要更新的文件是 js html 等静态资源, 而不是 class , 也是用ctrl +F9 重新编译
此时虽然左下角提示 "没有更新任何东西":
但是确实是有更新静态资源了, 刷新一下浏览器后就行,不行的话就不要当前页面的缓存再刷新一次页面
}
最后
这插件不强制一定要用某种打包方式打包整个项目,我都试过,皆可热部署
创建新的方法无法热更新 , 提示空指针
JRebel
触发热更新 :
正常 build 编译项目 , 自动替换有改动到的文件
简介
(真实的 2.0 跟书上的不一样了,至少用 JUnit 测试 这个章节不一样了)
书 1.3版本
试着用低版本的,来热更新
官网文档
https://projects.spring.io/spring-boot/
国人翻译的
https://github.com/qibaoguang/Spring-Boot-Reference-Guide
有简单提到 JPA 2.0 版本
http://docs.spring.io/spring-boot/docs/
然后找自己想要的版本
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
博客精讲
有一个可以用的的小项目
FQ看
Spring Boot 命令行工具
约定大于配置 :提前配置好了 , 并不是不配置 , 不配置机器怎么可能知道要做什么配置
Spring Boot
spring-boot是由 Pivotal团队 提供的全新框架简化新Spring应用的初始搭建以及开发过程
代码生成工具
优先使用这个,虽然是社区维护,不是官方维护,但官方推荐用它。Spring Roo
npm install -g generator-jhipster
插件
LiveReload
测试
官方提供 JUnit 的测试例子
但,怎么用TestNG测试Spring Boot
Spring Roo是个命令行工具
Spring Boot是极简的框架,连注解都很少
问题
无法热更新,部署到内嵌的Tomcat
这个要先解决再开发,不然开发效率太低了,亲身体验
第三方依赖包,用代理的方式
-javaagent:E:\workspace\springloaded-1.2.3.RELEASE.jar -noverify
-javaagent:E:\MVNRepository\org\springframework\springloaded\1.2.6.RELEASE\springloaded-1.2.6.RELEASE.jar -noverify
插件
加了可选的 true 属性
posted on 2017-04-08 11:26 xiaoCong2015 阅读(719) 评论(0) 编辑 收藏 举报