这两天学习spingboot遇到同一个问题,第一次解决了,第二次又忘了,所以在此做个笔记。
使用spring initializr创建的spingbooti项目,在运行时会报错
错误显而易见,定位到了main程序中。
报错原因
这是因为spring boot 会默认加载
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 这个类
DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean。因为工程中没有关于dataSource相关的配置信息,当spring创建dataSource bean因缺少相关的信息就会报错。
解决方法:
1. 直接在主程序加上以下注解,取消datasource类扫描。
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
2. 在配置文件中添加对应的数据库配置(如果你项目需要数据库配置就加上,不需要就用方法1)
# mysql数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#xxx为数据库名称
spring.datasource.url=jdbc:mysql://localhost:3306/xxxx?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=xxx#数据库密码
3. (还有一点,若你要运行这个端口,就要先将之前占用这个端口的程序叫停,不然还是会报这个错误)
这是取消DataSourceAutoConfiguration.class这个类的导入,可能报错。
4. 还有一种可能的错误是使用mybatis-plus(mp)时,什么都设计好了,但你没导入对应的依赖。因为没有依赖也没有编译错误,但是无法访问数据库。(没错,我找了两天没找到,还是叫人找的)
<!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> (这个是子项目的模块导入,不用设版本,自己看自己父类版本是啥) </dependency>
在使用spring intializr创建程序后,运行可能报错无效运行版本。
这是因为版本不匹配。
解决方法直接见下文操作链接:
注意:
当你使用spring initializr创建的spingbooti项目后,idea会自动给你配置最新的springboot版本(配置太高会不匹配),这里给我配置了3.0.2版本,导致我程序又报错了,给调成2.3.4.RELEASE版本后就好了(基本3.0.0版本以下就行)