在学习黑马的spring cloud第26集时,访问:http://localhost:8081/user/now正常访问,但访问http://localhost:8082/user/now出现空指针异常的错误
相关配置
代码:
bootstrap.yml
spring:
application:
name: userservice
profiles:
active: dev # 环境
cloud:
nacos:
server-addr: localhost:8848 # nacos地址
config:
file-extension: yaml # 文件后缀名
application.yml
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/cloud-user?useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
mybatis:
type-aliases-package: cn.itcast.user.pojo
configuration:
map-underscore-to-camel-case: true
logging:
level:
cn.itcast: debug
pattern:
dateformat: MM-dd HH:mm:ss
pattern:
name: 本地环境local
package cn.itcast.user.web;
import cn.itcast.user.config.PatternProperties;
import cn.itcast.user.pojo.User;
import cn.itcast.user.service.UserService;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@Slf4j
@RestController
@RequestMapping("/user")
// @RefreshScope
public class UserController {
@Autowired
private UserService userService;
@Value("${logging.pattern.dateformat}")
private String dateformat;
@Autowired
private PatternProperties properties;
@GetMapping("prop")
public PatternProperties properties(){
return properties;
}
@GetMapping("/now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDateformat()));
}
/**
* 路径: /user/110
*
* @param id 用户id
* @return 用户
*/
@GetMapping("/{id}")
public User queryById(@PathVariable("id") Long id,
@RequestHeader(value = "Truth", required = false) String truth) {
System.out.println("truth: " + truth);
return userService.queryById(id);
}
}
运行结果
内心OS(嘴巴张大大,8081都能访问,8082不能访问???)
解决过程
查看弹幕,发现说要引入spring-cloud-starter-bootstrap
引入之后8081正常,但是8082仍然出现空指针异常的错误
后面经过无数次更改发现是配置文件引用的问题
将配置文件关于dateformat修改 (dateformat不小心写在logging下面)
logging:
level:
cn.itcast: debug
pattern:
dateformat: MM-dd HH:mm:ss
将原来的 @Value("${logging.pattern.dateformat}")改成 @Value("${pattern.dateformat}")
解决成功