第一课咱们也不能免俗,要从starter开始,spring boot的起始项目脚手架能够从spring boot官方starter生成地址开始:https://start.spring.io/java
这张图列出了一个spring boot项目的几个基本信息,咱们大略的说一下:mysql
maven是用来干吗的呢,它解决了什么问题?是的,咱们用的任何技术都是为了解决问题的,在java application的上古时代,咱们的项目都是要把依赖的jar包包含在工程项目中的,因此一个项目会变的很大,哪怕你的项目改动很小,但一个完整的项目都须要带上这一堆jar包才能的拷贝给你的同事,一个哪怕几十K 源码的项目,要给到别人,都须要几十M,这是对网络传输带宽的巨大浪费。并且jar包之间会有各类依赖关系,所谓的jar hell在那个年代能够名副其实的噩梦,不一样的jar引用不一样版本的依赖jar,总有一款版本冲突搞死你,因此maven出现了,它统一管理jar和它的依赖关系,另外,提供公用的jar下载地址,称为maven repository,这样项目之间的传递就不须要带上jar包了,只须要把代码和配置文件传过去就能够了,项目体积大幅缩小。固然,maven还为各类项目本身的jar包提供了私有repository,还能够打包项目,运行项目等等等等,它能够解决不少工程上的管理部署问题,因此它的存在就变得颇有必要了。有空咱们再讲maven,我以为maven的坑也是陨石级别的,又多有深。spring
这两样东西仍然是和maven相关的,group的本意是表明公司组织的名称,但由于不少项目自己的package都是com.XXX形式,自己就表明了公司组织,因此咱们通常都变成了包名的开始部分。Artifact能够认为是Maven构建的项目名,因此group和artifact的组合通常就成了包名的共通部分。sql
spring boot的便利之处就在这里,咱们引入咱们须要的工具,框架的时候,不须要一个一个的jar包引入,而是能够总体引入,它自动会引入依赖包。点击数据库
就会下载一个基础的项目了。网络
这个截图我用的是eclipse,但结构是典型的maven项目的结构。mybatis
如今,咱们须要作的第一件事就是运行src/main/java下面的Lesson1Application,把项目跑起来。app
其实若是你直接运行是跑不起来的,报错信息以下:框架
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2019-05-23 12:39:03.599 ERROR 19220 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
缘由是咱们虽然尚未用到数据库,但咱们在pom.xml里面引入了mybatis:eclipse
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.1</version> </dependency>
只要用到了mybatis-spring-boot-starter,哪怕尚未任何访问数据库的动做,但应用也会去找数据库的配置,若是没找到,就会报错,解决的办法就是把数据库的配置在application.properties里面加上:
spring.datasource.driver=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost/ry?useUnicode=true&characterEncoding=utf-8 spring.datasource.username=root spring.datasource.password=root
但其实很不幸,仍是可能报错,由于我虽然引入了配置,但我用的mysql自己的依赖包并无:
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2019-05-23 13:34:18.286 ERROR 14588 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource: Property: driverclassname Value: com.mysql.cj.jdbc.Driver Origin: "driverClassName" from property source "source" Reason: Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class loader or Thread context classloader Action: Update your application's configuration
咱们只能再次打开pom.xml,引入mysql的jdbc driver依赖包:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
或者在开始的start.spring.io页面,就直接把mysql的jdbc driver 包加上,效果是同样的
这下再运行Lesson1Application,就不会再有问题了。
虽然如今没有问题了,但数据库连接的问题其实还有各类坑等着咱们,后面咱们讲多数据源配置的时候,再跳一次坑,继续讲。