spring boot入门(3)——照葫芦不一定能画瓢
2018-06-15 本文已影响0人
mxjsxz
学习技术总会遇到这样的尴尬“照葫芦不一定能画瓢”。按照教程好像每步都对,一实操就有了故事。
一、第一次使用IntelliJ IDEA
(1)感觉:哇,才发现eclipse就像以前的诺基亚,再看就丑;idea就像智能机,好看酷炫。
(2)Project Location
新建Maven项目时,有一步是选择项目位置,我理解成了eclipse的工作空间,想给idea建一个,于是设置成了这样
1.png
,导致项目建好以后,项目代码包的文件名不是girl,而是ApoCodeIJ。
✔✔✔
Project location路径应该设置到项目目录,即E:\ApoCodeIJ\girl
二、使用yml时,无法读取配置的属性
写了一个application.yml配置文件如下:
server:
port: 8080 #配置项目端口
salary: 80k #配置自定义属性,在代码中通过@Value("${salary}")注入使用
启动的时候报错:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'salary' in value "${salary}"
at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:172) ~[spring-core-5.0.6.RELEASE.jar:5.0.6.RELEASE]
...
先按照网上方法,删除其他配置文件只保留一个,没解决;给项目启动类Application加一些注解
@Configuration(import org.springframework.context.annotation.Configuration)
@ComponentScan(import org.springframework.context.annotation.ComponentScan)
和一段静态方法(忽略占位符无法解析的错误)
@Bean
public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
PropertySourcesPlaceholderConfigurer c = new PropertySourcesPlaceholderConfigurer();
c.setIgnoreUnresolvablePlaceholders(true);
return c;
}
没解决。
✔✔✔
最后网上找到,是因为yml配置文件的内容格式不对,应该写成server: port: 8080 #配置项目端口 salary: 80k #配置自定义属性,在代码中通过@Value("${salary}")注入使用
作为自定义属性的salary前面不能有缩进,否则会被解析成server的子属性,无法注入到代码中。
三、利用java -jar的cmd命令启动项目的问题
进入项目的目录下E:\ApoCodeIJ\girl>
,输入maven命令
(1)利用mvn install编译项目时,报错
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project girl: Fatal error compiling: 无效的标记: -parameters -> [Help 1]
✔✔✔
将环境变量改成jdk8以后成功启动。
- 疑问1:如果环境变量保持jdk7不变,将maven的配置文件改成jdk8的,是否可行?
- 疑问2:编译成功再利用
java -jar target/girl-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
启动项目后,用什么命令停止项目?
四、写pom.xml配置的问题
学习数据库操作时,给pom文件增加依赖
✔✔✔
根据pom文件的左侧提示来update maven indices 4.png ,更新完毕以后,新依赖不再报错,重新输入也有了自动提示。
-
疑问:在update maven indices过程,发现
5.png
,在前期已经在maven的配置文件中加入了阿里云镜像,这里为什么还是从maven的网站更新依赖?
五、数据库操作的问题
(1)根据教程,在application.yml文件写数据库相关配置
spring:
……
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.1.106:3306/springboot-girl
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update
show-sql: true
启动后报错
java.sql.SQLException: null, message from server: "Host 'DESKTOP-CLF5OLU' is not allowed to connect to this MySQL server"
✔✔✔
原因是无法通过IP访问数据库,利用网上的一种改表法来解决:
通过cmd命令mysql -u root -p #然后输入数据库密码 use mysql select host, user from user; #可以看到结果集中有条记录是host,root update user set host = '%' where user = 'root';
然后重启mysql服务
这样项目中配置文件就可以通过IP访问数据库。
当然,如果直接通过localhost访问不会遇到上述的问题。