spring boot入门(3)——照葫芦不一定能画瓢

学习技术总会遇到这样的尴尬“照葫芦不一定能画瓢”。按照教程好像每步都对,一实操就有了故事。

一、第一次使用IntelliJ IDEA

(1)感觉:哇,才发现eclipse就像以前的诺基亚,再看就丑;idea就像智能机,好看酷炫。
(2)Project Location
新建Maven项目时,有一步是选择项目位置,我理解成了eclipse的工作空间,想给idea建一个,于是设置成了这样


spring boot入门(3)——照葫芦不一定能画瓢_第1张图片
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文件增加依赖

(1)写新依赖时,没有出现教程中的spring-boot-starter-data-jpa自动提示
spring boot入门(3)——照葫芦不一定能画瓢_第2张图片
2.png
,手动输入以后,提示有错误
3.png

✔✔✔

根据pom文件的左侧提示来update maven indices
spring boot入门(3)——照葫芦不一定能画瓢_第3张图片
4.png
,更新完毕以后,新依赖不再报错,重新输入也有了自动提示。

  • 疑问:在update maven indices过程,发现
    spring boot入门(3)——照葫芦不一定能画瓢_第4张图片
    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访问不会遇到上述的问题。

你可能感兴趣的:(spring boot入门(3)——照葫芦不一定能画瓢)