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

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

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

相关网址:Welcome to Apache Maven         Spring Boot

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

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

4,查阅了相关的博客

一、概述体验经历

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

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

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

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>1.4.2.RELEASE</version>
  5. <relativePath /> <!-- lookup parent from repository -->
  6. </parent>

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

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

  1. <dependencyManagement>
  2. <dependencies>
  3. <dependency>
  4. <!-- Import dependency management from Spring Boot -->
  5. <groupId>org.springframework.boot</groupId>
  6. <artifactId>spring-boot-dependencies</artifactId>
  7. <version>1.3.0.BUILD-SNAPSHOT</version>
  8. <type>pom</type>
  9. <scope>import</scope>
  10. </dependency>
  11. </dependencies>
  12. </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. PS基础知识学习

    PS学习视频(全) https://ke.qq.com/webcourse/index.html#course_id=28554&term_id=100014572&taid=1349 ...

  2. Hadoop2.6.2的Eclipse插件的使用

    欢迎转载,且请注明出处,在文章页面明显位置给出原文连接. 本文链接:http://www.cnblogs.com/zdfjf/p/5178197.html 首先给出eclipse插件的下载地址:htt ...

  3. linux各文件夹的作用(转)

    转自:http://www.cnblogs.com/amboyna/archive/2008/02/16/1070474.html linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可 ...

  4. LR中webservice服务测试的脚本

    Action(){ /* 测试QQ是否在线的功能接口 输入参数:QQ号码 String,默认QQ号码:8698053. 返回数据:String,Y = 在线:N = 离线:E = QQ号码错误:A = ...

  5. Netbeans使用笔记

    Netbeans 新建项目 A brand new project 选择"文件">"新建项目"以打开新建项目向导. 在向导中,选择 "C/C++ ...

  6. 人人必知的10个 jQuery 小技巧

    原文地址:http://info.9iphp.com/10-jquery-tips-everyone-should-know/ 人人必知的10个 jQuery 小技巧   收集的10个 jQuery ...

  7. WPF中窗体在同一个位置实现不同页面切换

    要想在WPF窗体中实现不同页面切换,我们就需要用到ContentControl这个控件,这个控件的位置和大小就是你要显示页面的位置和大小. 下面举例说明: Xaml: <Grid> < ...

  8. 【iview input 回车刷页面bug】input 就一个的时候 有form的时候 回车会刷页面,如果就一个input,可以不要form,或者form里面两个input 将一个input v-show false 就可以了

    [iview input 回车刷页面bug]input 就一个的时候 有form的时候 回车会刷页面,如果就一个input,可以不要form,或者form里面两个input 将一个input v-sh ...

  9. JavaScript判断数组是否包含指定元素的方法

    本文实例讲述了JavaScript判断数组是否包含指定元素的方法.分享给大家供大家参考.具体如下: 这段代码通过prototype定义了数组方法,这样就可以在任意数组调用contains方法 /** ...

  10. 使用Xcode连接开源中国

    故事背景: 今天加入一个新的项目组,其实也就是包括我在内就两个人,由于对方在开源中国上建的项目我没法使用. 所以由我接手第一个任务:就是在开源中国上搭建git项目组 前提条件:xcode和 Git(h ...