• 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'


    常用依赖


            <!-- region QueryDSL -->
    
            <dependency>
                <groupId>com.querydsl</groupId>
                <artifactId>querydsl-jpa</artifactId>
            </dependency>
    
            <dependency>
                <groupId>com.querydsl</groupId>
                <artifactId>querydsl-apt</artifactId>
            </dependency>
            <!-- 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>




     
    归类到 spring,不是Spring Boot 独有的

    只有两个人可以用聊天室,因为配置


    但另一个大家都能收得到
     
    这个无视   9001端口 代码中没出现
     


    各种依赖,应该让Maven 管理,不然版本各种问题,而且互相拷贝不方便

    基于gradled
    2.15开始构建

    问题


    修改内置的 Tomcat 端口号


    在application.properties中添加
    server.port=8011
    可将tomcat默认端口号修改为8011



    信息: validateJarFile(E:webWebSocketProjectWebSocketJavaProject argetWebsocketHomeWEB-INFlibjavax.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:SoftwareTomcatapache-tomcat-7.0.34lib
    下的 servlet-api
    拷贝到项目里
    E:webdaJinWebRootWEB-INFlib


    依赖包导入

    配置一下,注意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:webdaJinoutartifactsdaJin_Web_exploded

    E:webSpringBootInit
    默认用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 项目


    启动过程中
    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>

    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>

    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>

    完整 :
    在 <project> 下添加
    <build>
    
    		<plugins>
    
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
    				<configuration>
    					<fork>true</fork>
    				</configuration>
    			</plugin>
    
    		</plugins>
    
    	</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

    有简单提到 JP2.0 版本
    http://docs.spring.io/spring-boot/docs/

    然后找自己想要的版本
    http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/

    博客精讲

    有一个可以用的的小项目


    翻墙看
    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:workspacespringloaded-1.2.3.RELEASE.jar -noverify
    -javaagent:E:MVNRepositoryorgspringframeworkspringloaded1.2.6.RELEASEspringloaded-1.2.6.RELEASE.jar -noverify

    插件
    加了可选的 true 属性









  • 相关阅读:
    centos git编译
    Unix/Linux小计
    centos gcc编译
    c++隐式转换(implicit conversion)
    通用c程序Makefile
    对弈的Python学习笔记
    LeetCode最长回文子串
    JDBC09 CLOB文本大对象
    JDBC08时间处理
    JDBC07 事务
  • 原文地址:https://www.cnblogs.com/xiaoCong2016/p/6681255.html
Copyright © 2020-2023  润新知