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

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. Struct和Class的区别 转

    C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能.struct能包含成员函数吗? 能!struct能继承吗? 能!!stru ...

  2. 声明已被否决 VS C++

    error C4996声明已被否决,不止一次碰到这个问题,在这里必须mark一下! 尝试这个1.Project Properties > Configuration Properties > ...

  3. /etc/default/useradd

    系统默认的shell在,/etc/default/useradd 中,添加用户的时候如果不指定shell,默认的shell就是该文件下制定的文件

  4. winform重绘

    1.重绘文字#多行文字a.先定义一个矩形 Rectangle p1 = , , , this.Height); Rectangle p2 = , , , this.Height); Rectangle ...

  5. POJ 2152 Fire (树形DP,经典)

    题意:给定一棵n个节点的树,要在某些点上建设消防站,使得所有点都能够通过某个消防站解决消防问题,但是每个点的建站费用不同,能够保证该点安全的消防站的距离上限也不同.给定每个点的建站费用以及最远的消防站 ...

  6. 如何让Sublime Text编辑器支持新的ABAP关键字

    ABAP 7.40推出了许多新的关键字 - keyword,您的Sublime Text可能无法针对这些新关键字实现期望的语法高亮显示(syntax highlight)或者自动完成(auto com ...

  7. OpenGL 渲染上下文-context

    context理解 OpenGL在渲染的时候需要一个Context,这个Context记录了OpenGL渲染需要的所有信息,可以把它理解成一个大的结构体,它里面记录了当前绘制使用的颜色.是否有光照计算 ...

  8. struts2默认拦截器defaultStack

    第一次使用Struts2.3.20,前台页面向后台传值,怎么总是提示值为null,查找半天原来是struts配置文件的action中忘记引入defaultStack拦截器了,所以即使Action中万事 ...

  9. Luogu P5349 幂

    大力数学题,发现自己好久没写多项式水平急速下降,求逆都要写挂233 首先看到关于多项式的等比数列求和,我们容易想到先求出每一项的系数然后最后累加起来即可,即设\(f_i=\sum_{n=0}^{\in ...

  10. 洛谷 p1141 01迷宫题解

    很长时间没发博客了,今天水一下 很多dalao说染色(普通的)过不了, 我怎么就过了 其实我也是今天才知道什么是染色(由@你听风在吼 dalao指导) 然后自己打了一个,也不知道叫不叫染色,反正是过了 ...