springboot 启动时遇到的问题
- 1.项目配置文件完全没有错,但是启动的时候 jpa 不自动建表
- 2.启动没有任何问题,controller 编写再三确认,但是启动以后 controller 无法访问。
- 3.肯定还有其他的问题,但是我还没有发现。
原因
以上问题的罪魁祸首,就是我自己手贱,把 springboot 的启动 类,自己建了个包放进去了。
原因嘛,就是因为我觉得其他的类都放在包里面,就这一个没有单独的包……而且为了代码结构看起来整洁,所以,脑抽建了个包,如下图:
就是这样啦,建了个 boot 包,然后把那个 app 改名 booter.java (自作聪明==自讨苦吃),看起来就是不一样了是吧。
然后问题就来了,首先,我创建了实体类,并且加了注解:
类似下面这样,写了几个实体类。
我的实体类
我的配置文件
server:
port: 8088
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/hp_wenxue
username: root
password: root
jpa:
show-sql: true
hibernate:
ddl-auto: create
thymeleaf:
encoding: UTF-8
cache: false
# mode: HTML5
# prefix: classpath:/templates/
# suffix: .html
# 首次启动项目可以将ddl-auto 改为 create ,将会自动创建表结构
# 数据库需要手动创建好
OK, 启动项目。。。奇怪了,数据库没有变化,没有自动建表。。。再三确认配置文件和注解,都是没有问题的,于是,尝试改了依赖的版本,改了配置文件,都是没有成功的。
我就奇了怪了,这个东西我之前是有做过的,但是都是没问题的,现在怎么会有这种问题呢?
由于要出去吃饭了,所以我就想既然项目能启动起来,就先试试 controller
能不能跑通吧?试了一下,依然是跑不通的。
我到底经历了什么鬼?
经过几百种尝试已经百度之后,我就重新建了一个项目,简单的配置后编写一个实体类,一执行:数-据-库-有-表-了.....,然后写了个 controller
,一请求,又-成-功-了.....。……
我把新建的项目和我原本的项目进行仔细的对比————最大的不同,就是我自己给 springboot 的启动类 App.java
建了个包,还和 controller
和 domain
包是同级的,于是我把这个 App.java
放回人家原本的位置。启动项目。OK ,什么问题都没有了。
我。。。我 不服
我想可能是 springboot 在启动的时候,就已经去读 controller
和 实体类了,或者对这两个东西做了什么操作了。但是由于包的原因,他没有找到这两个,所以被忽略了。当然,我也只是瞎猜,其中缘由我目前还是不知道的,如有大神知晓,烦请告知,不甚感激
- 为了证明我的猜想,我又做了如下验证:
1.把 App.java
放在 controller
的根目录
2.把 App.java
放在 entity
的根目录
3.把 App.java
放在所有包的最外层目录
结论如下:
1.controller
能访问,数据库不能自动建表。
2. 数据库能自动建表,但是 controller
不能访问。
3. 数据库能自动建表,controller
也能正常访问。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于