前段时间发布的Traveller项目,花费了不少精力,但是效果并不如意,根源在于瀑布式的开发思想不适合这种独立的学习项目。在项目初始就规划一个全面的web系统,,因为预设了一个前景,在心理上会想尽快看到效果,为了达到这样的目的,会找一些例子直接使用,不会花时间去思考为什么这么做。摊子铺得太开,随后丧失了全面维护的耐心,精力也跟不上了。

这个Decoration项目,在原来的项目基础上开发,我计划用一种新的思路。不做宏观的效果预设,从一个小的功能开始逐渐深入,直到发现要添加新的东西进来的时候,再去考虑通过小规模的演进迭代增加进来。这样的好处是每次迭代只关注一点,循序渐进,控制节奏,压力小一点,权当是业余练手。

因为是开发练习,尽可能省掉重量级的配套,直接用内存数据库H2代替Mysql,用内置服务器代替Tomcat,这样更关注技能点的实现,少了外部的干扰。也不要急着传到GitHub上,等到有一定的雏形的时候再上传,上传之后,也不要改一点东西就更新,总之这些外部的东西都不是重点,重点是技术本身,抓大放小,有的放矢,不忘初心。

我会在这里陆续记录开发中遇到的各种坑,附带上坑的解决办法,这不是通用的开发教程,那种教程网上已经写得比较多了,我就不要再插一腿了。

4月7日之前的工作进展

1、基本的环境的设定

Eclipse(放弃了STS,采用了更通用的版本):配好maven路径

JDK8:设置环境变量

Maven:需要JAVA_HOME、MAVEN_HOME环境变量,为了更快地下载jar包,需要在配置文件中增加新的阿里镜像,以前需要等好几个小时的项目编译,现在5min搞定。

<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>

Spring:SpringBoot + SpringDataJPA + H2(内置数据库)

//热部署所用的依赖,这样改了代码不用重启内置服务器,方便太多了
org.springframework.springloaded
//用户把项目打包成jar的依赖
spring-boot-maven-plugin
//定义实体的时候可以用@DATA省略掉对应的set和get方法,也很方便
org.projectlombok.lombok

2、建立最基本的Repository、Controller

运行 mvn spring-boot:run,成功提示helloword

3、下面就是要讲数据真正写到数据并能够查出来了

第一步,现在系统启动之后能够默认插入进去一些数据,这样我们先可以查,因为查询总是最简单的,方法是用CommandLineRunner,实现这个借口的bean,会在application启动之后自动执行,我只需要在这个bean里面把预制的数据save到表里面。application关闭的时候就会自动清除这些数据。

第二步,H2数据库有个web终端,可以用图形的方式查看库里面的数据,先要打开配置application.properties,增加一条

spring.h2.console.enabled=true

然后访问,http://localhost:8080/h2-console

点击连接就能够登录到数据库,这是你会看到,我定义的实体已经默认生产了数据库结构,CommandLineRunner里面默认的数据也已经插入进去了。这里需要注意的是上图中的JDBC URL,默认的数据库为jdbc:h2:mem:h2db,要查询真正的本系统建立的数据库需要打开一个配置项,再从日志中找到真正的URL,这个配置项如下:

logging.level.org.hibernate=DEBUG

4、要在前台显示实体数据

(1)先要显示出一个正常的index.html来,那么普通的html非动态资源怎么显示呢,只要放到工程的resource/static或者resource/pubilc目录下就行了,搞定

(2)先用PostMan查一下,后端返回的数据到底是什么样的

PostMan是一个chrome的插件,用来方便地查看http的request和response,非常好用

请求返回的数据都是null的,在后台打印一下日志,明确到数据确实是查出来了,之所以返回没有查出来,应该是返回的四个对象没有按照json格式返回成字符串,我们下面的目标就是先把json的数据返回回来。

(3)用spring-boot内置的starter,添加pom依赖如下

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>

在Repository上增加注解@RepositoryRestResource,这个注解的意义是让Spring MVC在/people处创建RESTful入口点。这样一来,我们配置的controller就没有用了,先删掉。

@RepositoryRestResource(collectionResourceRel = "customer", path = "customer")
public interface CustomerRepository extends PagingAndSortingRepository<Customer, Long> {
List<Customer> findByLastName(String lastName);
}

好,重新用PostMan测试一下

Json出来了,为什么没有显示表的内容呢,查看Customer.class反编译出来的源码,发现get/set方法没有,追逐原因,原来是@Data注解没有起作用,使用lombok需要用在Eclipse上进行安装才行,我之前没有安装,只是导入了pom依赖。但是我按照网上的方法安装后,Eclipse无法启动,于是我舍弃lombok(只要修改下eclipse.ini),反正Eclipse自己生产get/set也是点一下鼠标就能做到了,只是代码比较臃肿而已。这会应该没什么问题了:

Decoration1:Spring-boot基础实现的更多相关文章

  1. Spring Boot 基础

    Spring Boot 基础 Spring Boot 项目(参考1) 提供了一个类似ASP.NET MVC的默认模板一样的标准样板,直接集成了一系列的组件并使用了默认的配置.使用Spring Boot ...

  2. Spring Boot 基础教程系列学习文档

    Spring Boot基础教程1-Spring Tool Suite工具的安装 Spring Boot基础教程2-RESTfull API简单项目的快速搭建 Spring Boot基础教程3-配置文件 ...

  3. spring boot基础 入门

    spring boot基础 spring boot 的简单搭建 spring boot 的基本用法 spring boot 基本用法 自动配置 技术集成 性能监控 源码解析 工程的构建 创建一个mav ...

  4. Spring Boot基础教程》 第1节工具的安装和使用

    <Spring Boot基础教程> 第1节 工具的安装和使用 Spring Boot文档 https://qbgbook.gitbooks.io/spring-boot-reference ...

  5. spring boot基础学习教程

    Spring boot 标签(空格分隔): springboot HelloWorld 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新 ...

  6. Spring Boot 基础,理论,简介

    Spring Boot 基础,理论,简介 1.SpringBoot自动装配 1.1 Spring装配方式 1.2 Spring @Enable 模块驱动 1.3 Spring 条件装配 2.自动装配正 ...

  7. Java Web系列:Spring Boot 基础

    Spring Boot 项目(参考1) 提供了一个类似ASP.NET MVC的默认模板一样的标准样板,直接集成了一系列的组件并使用了默认的配置.使用Spring Boot 不会降低学习成本,甚至增加了 ...

  8. Java Web系列:Spring Boot 基础 (转)

    Spring Boot 项目(参考1) 提供了一个类似ASP.NET MVC的默认模板一样的标准样板,直接集成了一系列的组件并使用了默认的配置.使用Spring Boot 不会降低学习成本,甚至增加了 ...

  9. Spring Boot - 基础 POM 文件

    表 1. Spring Boot 推荐的基础 POM 文件 名称 说明 spring-boot-starter 核心 POM,包含自动配置支持.日志库和对 YAML 配置文件的支持. spring-b ...

  10. Spring Boot学习笔记---Spring Boot 基础及使用idea搭建项目

    最近一段时间一直在学习Spring Boot,刚进的一家公司也正好有用到这个技术.虽然一直在学习,但是还没有好好的总结,今天周末先简单总结一下基础知识,等有时间再慢慢学习总结吧. Spring Boo ...

随机推荐

  1. Netty游戏服务器之三搭建Unity客户端

    既然已经写完了相关的服务器处理类,那么我们就来搭建客户端测试一下. 打开我们的unity3d,然后新建一个c#脚本,取名为MainClient. public class MainClient : M ...

  2. 重设WebLogic AdminServer的密码

    1.先停止运行的WebLogic Server $ $DOMAIN_HOME/bin/stopWebLogic.sh 2.迁移AdminServer下的数据目录 $ mv $DOMAIN_HOME/s ...

  3. 修改centos7/osx的MAC地址

    change MAC Address in CentOS 7: nano /etc/sysconfig/network-scripts/ifcfg-ens160 systemctl restart n ...

  4. 在ios程序中自己主动滚动TableView到某行的方法

    比方tableview窗体能够显示 30 行, 我想在填充tableview 100 条数据后 选择第 50行, 能把这一行显示到窗体内, 就像手动拖滚动栏到 第 50行一样,要怎样实现呢? ] an ...

  5. Android Studio 之 NDK篇

    由于工作内容的关系,对于NDK的工作涉及比较广(保密性,安全性),所以本章内容讲述一下NDK的基本使用过程. 网上也有很多这样的教程或者描述,但描述的并不完全 开发工具:Android Studio ...

  6. 配置Yum源repo文件及搭建本地Yum服务器

    分享一篇配置Yum源repo文件及搭建本地Yum服务器的方法,希望对大家有用. Yum源的话有三大类: Base Extra Epel Base:就是你下载的光盘镜像里面的DVD1Extra:就是你下 ...

  7. scrapy-splash抓取动态数据例子五

    一.介绍 本例子用scrapy-splash抓取智能电视网网站给定关键字抓取咨询信息. 给定关键字:打通:融合:电视 抓取信息内如下: 1.资讯标题 2.资讯链接 3.资讯时间 4.资讯来源 二.网站 ...

  8. HDU1505(HDU1506的加强版)

    昨天打 CF又跪了.近期睡不好睡不好睡不好-感觉整个人都累傻了,根本无办法写下去,只写了一题签到题就跪了orz..从未试过这么悲剧. 今天早上凭着我的意念("怨念").七点又起来了 ...

  9. Spark Streaming updateStateByKey和mapWithState源码解密

    本篇从二个方面进行源码分析: 一.updateStateByKey解密 二.mapWithState解密 通过对Spark研究角度来研究jvm.分布式.图计算.架构设计.软件工程思想,可以学到很多东西 ...

  10. Struts基本概念

    内容源自: Struts2基本概念 一.struts2体系结构: 1.Web浏览器请求一个资源.2.过滤器Dispatcher查找方法,确定适当的Action.3.拦截器自动对请求应用通用功能,如验证 ...