inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이야기를 나눠요

173만명의 커뮤니티!! 함께 토론해봐요.

스프링부트에서 Environment 프로퍼티 NullPointerException

아래 코드와 같이 컨트롤러에서 Environment로 yaml의 프로퍼티 값을 꺼내서 사용하고 있었는데 @Slf4j @RestController @RequestMapping("/users") public class RefreshAccessToken { @Autowired UsersService usersService; Environment env; public RefreshAccessToken(Environment env) { this.env = env; } @PostMapping("/refreshAccessToken") private ResponseEntity<?> getRefreshAccessToken(HttpServletRequest request, HttpServletResponse response) { // 요청 헤더에서 refresh token 읽기 String authorizationHeader = request.getHeader("refreshToken"); if (authorizationHeader == null || !authorizationHeader.startsWith(env.getProperty("authorization.token.header.prefix"))) { log.warn("RefreshToken validation error #1 : refreshToken header isn't exists"); throw new CustomApiException("refreshToken header isn't exists"); } ... } ... } env에서 NullPointerException이 발생하더라구요... UsersService와 Enviroment 모두 롬복 생성자 주입해도 안되고, @Value 를 사용해보기도 했는데 역시 프로퍼티 값을 못가져왔습니다. yaml은 application.yml에서 각 서버의 profile을 잡도록 해서 사용 중이고, 모든 서버의 profile에 해당 프로퍼티 키, 밸류가 있습니다. 프로퍼티 키 오타도 없구요. env가 계속 원인을 알 수 없는 null이어서 결국 해당 컨트롤러를 삭제하고 새로 컨트롤러를 만들어봤더니 이번엔 이상없이 env 값이 잘 들어옵니다.😇 아래 새로 만든 컨트롤러 코드엔 롬복 생성자 주입을 사용하고 있는데 혹시나 이게 원인인가 싶어 @Autowired 로 필드 주입이랑 수동 생성자 주입 모두 해봤는데 아무런 문제가 없었습니다. 심지어 NPE가 발생했던 코드와 똑같이 짜봤는데 오류가 안생기더라구요. @Slf4j @RequiredArgsConstructor @RequestMapping("/users") @RestController public class RefreshTokenController { private final Environment env; private final IUsersService usersService; @PostMapping("/refreshAccessToken") public ResponseEntity<?> getAccessTokenByRefreshToken(HttpServletRequest request, HttpServletResponse response) { String secret = env.getProperty("token.secret"); String prefix = env.getProperty("authorization.token.header.prefix"); String expiration = env.getProperty("token.access_expiration_time"); // 토큰 읽어오기 String authorizationHeader = request.getHeader("refreshToken"); if (authorizationHeader == null || !authorizationHeader.startsWith(prefix)) { log.warn("RefreshToken validation error #1 : refreshToken header isn't exists"); throw new CustomApiException("refreshToken header isn't exists"); } ... } ... } 현재로선 Environment 초기화 시점이 꼬여서 null인게 가장 의심이 되긴는데 정확한 오류의 원인을 모르겠어서 질문드립니다.

  • springboot
  • property
  • nullpointerexception
  • yaml
  • environment
Sol Park 댓글 0 좋아요 0 조회수 1068

문의 사항이 몇가지 있습니다.

오라클 성능 분석과 인스턴스 튜닝 핵심 가이드

안녕하세요 선생님. 문의드리고 싶은 내용이 있는데 글을 올릴 곳이 마땅치 않아 여기에 문의드립니다. 저는 현재 DBA 로 근무 중인데 SQL 작성 능력을 키우고 싶은데 혹시 선생님의 '데이터 분석 SQL Fundamentals' 강의가 DBA 업무 쿼리 작성에 도움이 될 수 있는 강의일까요? 일을 해보니 join, grouping 이 쉬운것 같으면서도 다양한 쿼리 작성 시에 자유자재로 안써지는 편이라 아직 공부가 덜 된것 같아서요. 일/주/월 사이즈 구하는 쿼리나 기타 여러 조건이 결합된 오브젝트 조회 쿼리를 주로 작성할 필요가 있고, 앞으로 튜닝 업무를 위한 튜닝 공부를 할 때도 기본 이상의 SQL 작성 능력이 필요하다고 판단되서 문의드립니다. 그리고 선생님의 ORACLE 아키텍쳐 강의는 출퇴근 간에 잘 듣고 있는데 혹시 SQL 튜닝 강의는 하실 예정이 있으실까요? 감사합니다.

  • oracle
  • sql
radh jigsawfit 댓글 1 좋아요 0 조회수 483

datagrip에서 복구하기

데이터 분석 SQL Fundamentals

datagrip에서 복구 하려고 하면 postgre 관련 cli 가 필요합니다. 아래와 같이 우선 실행 $ brew install libpq $ echo 'export PATH="/opt/homebrew/opt/libpq/bin:$PATH"' >> ~/.zshrc $ source ~/.zshrc $ psql --version psql (PostgreSQL) 15.2 Path to pg_restore 에서 CMD+SHIFT+G 눌러서 brew로 설치한 디렉토리로 이동 이후 복구 하면 됩니다

  • sql
  • postgresql
  • dbms/rdbms
무리브 댓글 1 좋아요 2 조회수 2333

MacOS에서 MySQL workbench에서 조회할 때 튕기시는 분

갖고노는 MySQL 데이터베이스 by 얄코

sakila db 조회할 때마다 위처럼 튕겨서 찾아보니 MySQL workbench를 8.0.31버전으로 받아야한다고 하네요( 참고 ) 다운로드 링크: https://downloads.mysql.com/archives/workbench/

  • sql
  • mysql
  • dbms/rdbms
  • 데이터-엔지니어링
gyuray 댓글 0 좋아요 0 조회수 4256

인기 태그

인프런 TOP Writers

주간 인기글