面向解决问题的java编程,spring boot,mybatis generator和坑-1starter

1、start一个spring boot项目

第一课我们也不能免俗,要从starter开始,spring boot的起始项目脚手架可以从spring boot官方starter生成地址开始:https://start.spring.io/

    这张图列出了一个spring boot项目的几个基本信息,我们大略的说一下:

     maven是用来干嘛的呢,它解决了什么问题?是的,我们用的任何技术都是为了解决问题的,在java application的上古时代,我们的项目都是要把依赖的jar包包含在工程项目中的,所以一个项目会变的很大,哪怕你的项目改动很小,但一个完整的项目都需要带上这一堆jar包才能的拷贝给你的同事,一个哪怕几十K 源码的项目,要给到别人,都需要几十M,这是对网络传输带宽的巨大浪费。而且jar包之间会有各种依赖关系,所谓的jar hell在那个年代可以名副其实的噩梦,不同的jar引用不同版本的依赖jar,总有一款版本冲突搞死你,所以maven出现了,它统一管理jar和它的依赖关系,另外,提供公用的jar下载地址,称为maven repository,这样项目之间的传递就不需要带上jar包了,只需要把代码和配置文件传过去就可以了,项目体积大幅缩小。当然,maven还为各种项目自己的jar包提供了私有repository,还可以打包项目,运行项目等等等等,它可以解决很多工程上的管理部署问题,所以它的存在就变得很有必要了。有空我们再讲maven,我觉得maven的坑也是陨石级别的,又多有深。

    这两样东西仍然是和maven相关的,group的本意是代表公司组织的名称,但因为很多项目本身的package都是com.XXX形式,本身就代表了公司组织,所以我们一般都变成了包名的开始部分。Artifact可以认为是Maven构建的项目名,所以group和artifact的组合一般就成了包名的共通部分。

    spring boot的便利之处就在这里,我们引入我们需要的工具,框架的时候,不需要一个一个的jar包引入,而是可以整体引入,它自动会引入依赖包。点击

就会下载一个基础的项目了。

2、看看项目的结构

这个截图我用的是eclipse,但结构是典型的maven项目的结构。

  • src/main/java存放代码
  • src/main/resource下面存放配置文件、静态文件(static)和模板文件(templates),templates并不是maven的默认创建的目录,而是spring boot自行创建的,后面如果我们用thymeleaf的话,会把模板文件放在templates。
  • scr/test/java就是放测试代码的地方
  • target是我们的代码编译后的class文件和打包后的jar包、war包生成的地方
  • 最外面的是pom.xml文件,就是maven的配置啦(请忽略上面的红点,这是我eclipse的问题)

    现在,我们需要做的第一件事就是运行src/main/java下面的Lesson1Application,把项目跑起来。

3、坑

    其实如果你直接运行是跑不起来的,报错信息如下:

    

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:

        <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,就不会再有问题了。

虽然现在没有问题了,但数据库链接的问题其实还有各种坑等着我们,后面我们讲多数据源配置的时候,再跳一次坑,继续讲。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值