首先,写这篇博客的背景:

1,通过maven使用springboot创建项目,进行了简单的页面跳转,并未编写service和DAL层,也就是说,并未整合持久化框架

2,阅读了maven的官方文档、springboot的官方文档 ——英文版

相关网址:Welcome to Apache Maven         Spring Boot

其中,所使用的springboot项目,通过官网进行配置下载生成,然后在eclipse中直接引入已存在maven项目,没有自行创建或者添加引用!

3,阅读了springboot的开发手册 ——中文版

4,查阅了相关的博客

一、概述体验经历

先说明一下在使用springboot的一系列故事:

在上篇播客中:大道至简——你比你想象中更早接触微服务 我已经提到,我没有能成功的创建一个springboot的实例,因为不管是使用文档中的哪一种引入依赖的方法,maven项目每次都报错,通过查询资料,最多的可能是论坛、stackoverflow,博客中,以及官方文档中去查找解决方案,但都没有能成功解决!

第一:刚开始,直接采用下面的方式引入父工程的依赖:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>

但是,在这个parent节点报错。网上的解决方案,大都是通过relativePath 节点指定父工程坐标pom文件,或者说是强制更新maven依赖jar包。但是,我都没有解决问题!

第二:使用非父工程引入方式,如下:

<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.3.0.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

但是这时候,接下来的对于springboot的其他组件依赖引用报错,还有就是maven配置文件报错!这时候,想到再次翻阅官方文档,再看了2遍文档之后,查了查相关的资料,最终将jdk的版本降了一级,从java 8降到java 7 ,同时更改maven的user setting文件,设置本地仓库等一系列配置!

perfect,success!

第三:再次查看官方文档以及开发手册

在官方文档中,没有提到对于jdk的要求或者maven的版本要求,但是,如果使用官方配置的方式生成项目的话,jdk等是可选的,java6、7、8等都是可选的,这时候,本宝宝就想,既然是可选择的,那么就代表官方认为可用!  然后再次查阅了开发手册,它没有明确提到必须使用哪一版本的jdk,但是反复提到了一句话:如果可能的话,尽可能使用java最新版本! 这时候,推翻了之前认为是jdk版本不对导致的报错!经过更改jdk版本测试,确实如此!

第四:再现报错项目

再成功的进行了页面跳转,简单的了解了事务、AOP、注解和插件等东西之后,再次对之前的错误进行的再现,有以下发现:

1,配置环境变量为1.7,eclipse配置也为1.7,但是,在pom文件中,显式指定<java version>1.8</java version>

2,在maven的配置中,用户配置文件setting使用default配置,也就是${user home}/.m2/setting.xml,但是,在这个文件夹下,并不存在这个配置文件。并且本地仓库的路径,和我预期想要使用的地址不对应

最后的初步定论:

在我本次的使用中,问题应该是出在了maven的user setting文件配置中。因为我安装后,在安装目录有一个全局的配置文件,也就没有在添加用户配置文件。但是由于全局配置文件是之前用于另一个项目,之前配置好了也就没再管,但刚好这个配置文件里指定的本地仓库位置和eclipse里面的不一样! 后来通过user setting文件对这个全局配置进行覆盖,将原来的项目需要的配置,进行封装隔离!

在这时候,就想到了之前开发两个不同项目的时候,出现过的环境影响问题。那时候是通过不同的workspace进行隔离,但这次应该是忘了使用不同的maven配置文件了!嗯,也算是一个教训吧!

二、使用感受

说实在的,官网上的配置很全套,一种可视化的配置,比如你要用什么数据库,要用什么ORM框架,要用什么通用工具包,直接打钩选择,然后点击确定就行了,然后就是一个什么都配置好的项目框架。可以说,要配置一个SpringMVC、Spring、Mybatis的框架,要是鼠标点得快一点,绝不会超过一分钟!所以说,从框架的的搭建上来说,就大大的减少了工作量!

但是,在看文档和体验的过程中,想起来之前开发一个后台管理系统时,所使用的另一个快速开发框架:JFinal。因为我用那个框架开发过项目,从前台到后台,所以还算是比较了解,我挺喜欢的。springboot,怎么说呢,可能就是和spring的结合紧密些吧(目前没有真正的用springboot去开发过大型项目)! JFinal是一个集合了前端和ORM框架的框架,整个框架非常小,包括实体的自动生成,通用方法的框架自身携带,和record模式的底层方法实现。如果,只从开发速度上来看的话,我会选Jfinal,这个框架提供的插件扩展(包括和spring的整合插件)也是很不错的,常见的上传下载,以及重写扩展等,都不错!

备注:我曾经写过Jfinal底层的方法文档,因为是英文注释,所以那时候组长让我翻译整理成文档!后来因为要分享,还看了一段时间的源码,尤其是插件扩展、底层和事务的实现方式!

springboot,很多东西通过注解,比如事务!Jfinal也一样是通过注解实现。很多东西都是一样的,所以在使用springboot的时候,真的回到了那个项目开发的时候的感觉,太熟悉了真的。  包括springboot的修改启动端口等,怎么说呢,从某种程度上来说,Jfinal更简单!当然网上也有这两种框架相互整合的实例,但说实在的,他们根本不是一个层级的框架,springboot没必要整合Jfinal,去使用它的ORM实现(如果整合了通用mapper的话),Jfinal也没必要整合springboot。

三、总结

很有一种危机感,又回到了我前段 时间的一个感受:很多东西,在我刚知道它的时候,它却已经过时了,甚至我还不知道的时候!那么,怎么样才能提升自己的一个竞争力呢?就跟我和一个好基友说的那样:为什么偏偏是springboot火了,Jfinal也挺好的呀。我感觉,我严重的陷入了人云亦云的窘境中,别人说什么好,就是什么好,我从来不会想,它到底怎么好,它好在哪里,它什么时候会更好,有没有比它更好的。作为一个人来说,只会跟着别人跑,其实挺悲哀的,把自己的一切都交给了别人。不过,也还是那句话,就先且让我站在巨人的肩膀上学习吧!

在这个过程中,了解了很多别的东西,比如maven的传递依赖性的解决,maven的环境配置及自动化构建,还有就是java的版本更新历史以及各个新特性,嗯,不错,继续努力!

我有一种,我开始在博客中,各种废话各种瞎说胡扯的感觉,但也有一种预感,估计在未来的很长时间里,我的博客都不会出现大片的代码了,那啥,难道说是写代码写多了,就写傻了。。。。。。。。。。。。

springboot的使用体验和思考的更多相关文章

  1. 【Windows Phone设计与用户体验】关于移动产品的Loading用户体验的思考

    作为一款运行在移动端上的产品,必定会有一些耗时的操作.为了具有良好的用户体验,Loading效果是必不可少的,而什么形式的Loading才会有良好的用户体验? Loading形式简单分为两类: 一.遮 ...

  2. SpringBoot入门初体验

    概述 Java项目开发中繁多的配置,复杂的部署流程和第三方技术集成让码农在开发项目中效率低下,因此springBoot应运而生. 环境 IntelliJ IDEA 2018.3 jkd1.8 开始(傻 ...

  3. SpringBoot之初体验

    一.SpringBoot 介绍 1.1 SpringBoot 使命 在之前我们学习 Spring 时,我们了解到 Spring 最根本的使命就是 简化Java开发.而 SpringBoot 的出现也有 ...

  4. 《iOS用户体验》总结与思考-改动版

    假设转载此文.请注明出处:http://blog.csdn.net/paulery2012/article/details/25157347,谢谢. 前言: 本文是在阅读<ios用户体验> ...

  5. SpringBoot自动化配置之二:自动配置(AutoConfigure)原理、EnableAutoConfiguration、condition

    自动配置绝对算得上是Spring Boot的最大亮点,完美的展示了CoC约定优于配置: Spring Boot能自动配置Spring各种子项目(Spring MVC, Spring Security, ...

  6. ios用户体验

    如果转载此文,请注明出处:http://blog.csdn.net/paulery2012/article/details/25157347,谢谢! 前言: 本文是在阅读<ios用户体验> ...

  7. SpringBoot自定义Condition注解

        最近碰到个这样的需求,需要同一套代码适配个版本数据库(数据库不同,且部分表的字段及关联关系可能会不同),即这套代码配置不同的数据库都能跑.项目采用的框架为SpringBoot+Mybatis. ...

  8. Springboot + 持久层框架JOOQ

    简介 官网链接 JOOQ是一套持久层框架,主要特点是: 逆向工程,自动根据数据库结构生成对应的类 流式的API,像写SQL一样 提供类型安全的SQL查询,JOOQ的主要优势,可以帮助我们在写SQL时就 ...

  9. 【SpringBoot MQ 系列】RabbitListener 消费基本使用姿势介绍

    [MQ 系列]RabbitListener 消费基本使用姿势介绍 之前介绍了 rabbitmq 的消息发送姿势,既然有发送,当然就得有消费者,在 SpringBoot 环境下,消费可以说比较简单了,借 ...

随机推荐

  1. 一起来学Spring Cloud | 第三章:服务消费者 (负载均衡Ribbon)

    一.负载均衡的简介: 负载均衡是高可用架构的一个关键组件,主要用来提高性能和可用性,通过负载均衡将流量分发到多个服务器,多服务器能够消除单个服务器的故障,减轻单个服务器的访问压力. 1.服务端负载均衡 ...

  2. CF1093D Beautiful Graph

    思路: 题目倒是没啥好说的,就是注意memset的效率问题.如果循环多次调用memset去初始化一个比较大的数组,那就会很费时间.就是因为这个被hack了.:( 实现: #include <bi ...

  3. Objective-C language

    Objective-C is the primary language used to write Mac software. If you're comfortable with basic obj ...

  4. Fragment(一)--Fragment用法常见问题

    fragment notes fragment相关内容包括 基本定义与使用 回退栈内部实现 fragment通信(与activity 与fragment) DialogFragment VP + Fr ...

  5. pingall脚本

    p i n g a l l:一个按照/ e t c / h o s t s文件中的条目逐一p i n g所有主机的脚本 它能够按照/ e t c / h o s t s文件中的条目逐一p i n g所 ...

  6. socket使用非阻塞connect

    在使用tcp的connect调用时,默认是使用阻塞方式,当服务器当前不可用时,connect会等待(内部在重试?)直到超时时间到达,而这个超时时间是系统内核规定的,不能使用setSocketOpt来设 ...

  7. MySQL优化汇总

    1)mysql优化汇总,转载自网络

  8. Android学习总结(九)———— 内容提供器(ContentProvider)

    一.内容提供器基本概念 内容提供器主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访数据的安全性.详细资料请看下图: 二.示例 ...

  9. java+spring 执行器

    A 通过MethodInvokingJobDetailFactoryBean类实现 spring配置文件里增加执行器配置 <bean id="ammoDue" class=& ...

  10. ubuntu 16.0安装 hadoop2.8.3

    环境:ubuntu 16.0 需要软件:jdk ssh https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/ 2.8.3 安装 jdk并 ...