zoukankan      html  css  js  c++  java
  • springboot的使用体验和思考

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

    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的版本更新历史以及各个新特性,嗯,不错,继续努力!


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

  • 相关阅读:
    制作一个命令式的 React 弹出层组件 (适用 React Native)
    React 中的 onInput/onChange
    防抖和节流及对应的React Hooks封装
    React Native选择器组件-react-native-slidepicker
    React Portal
    Quartz学习 之 Jobs 和 Triggers
    Quartz学习 之 关键接口
    Quartz学习 之 入门
    JAVA NIO 原理探秘 --- Socket
    JAVA面试题
  • 原文地址:https://www.cnblogs.com/hhx626/p/7534624.html
Copyright © 2011-2022 走看看