프로그램을 만들다 보니, 로그를 잘 남기는 것이 중요하다는 것을 알게 되었습니다. 그래서 로깅도 몇 편 정도 쓸 듯 싶습니다. 이번 시간에는 logging.level에 대해서 알아보겠습니다. 문서를 보시면, 로그 레벨은 총 6단계임을 알 수 있어요. TRACE, DEBUG, INFO, WARN, ERROR, FATAL. 제가 낸 문제 중에 lv의 최댓값이 6까지 나올 수 있다는 조건은 이것을 바탕으로 해서 만들어 졌습니다. 프로젝트 구조를 보겠습니다. controller, 그리고 application.properties만 건드렸습니다. testController를 보시면, test를 호출하면 Exception을 throw 하게 만들었습니다. /test는 GET 메서드로만 받고요. application.p..
spring 검색 결과
spring boot에서 파일에 설정 정보가 있는 경우에는 어떻게 읽어와야 할까요? 요구 사항은 아래와 같습니다. 어떻게 하면 좋을까요? 요구 사항을 먼저 간단하게 분석해 봅시다. 요구 사항에서 중요한 것은 크게 3가지입니다. 프로그램은 properties 설정 파일 하나를 읽어서, db 접속 정보를 읽어내야 합니다. 그 외에 셋팅값 정보는 없다는 것이 중요합니다. 보통 host와 password, db를 읽어야 합니다. 이 3개가 있어야 접속을 할 수 있기 때문입니다. 단지, 접속 정보를 외부 파일로부터 읽어내는 것이 중요한데요. 외부 파일은 아래 위치에 있다고 해 봅시다. jo_test/spring/external_configure의 conf 폴더 밑에 app-prod.properties에 있다고 해..
path traversal 공격은 들어보신 분도 계실 겁니다. spring boot로 만든 간단한 프로그램을 가지고 테스트를 해 보도록 하겠습니다. 먼저, 프로젝트 구조는 다음과 같습니다. application.properties를 보겠습니다. server의 포트를 7778로 설정하였습니다. 다음에, default controller를 보겠습니다. 뭔가 복잡해 보이는데요. path가 /data입니다. 이것은, 파라미터로 file name을 보내면, 해당 파일에 있는 내용을 출력해서 응답합니다. 별 문제는 없어 보입니다. 저는 클라이언트가 보내준 값만 믿겠습니다. 저는 우분투를 이용하므로, 방화벽을 설정해 줄 건데요. 포트를 7778을 쓰므로, 172.30.1.0/24에 대해서만 허용해 줍니다. 왜 그런지..
저번 글에서, ConfigureSource에 대해 알아보았습니다. 그 글에서, 이런 이야기를 했습니다. 객체가 생성되었을 때, 완전한 상태가 되게 할 수는 없을까? 정확히 말하면, 객체가 생성되었을 때, 설정이 되어야 하는 값은 생성이 될 때 setting이 되게 할 수 없을지를 고민해 보자고 하였습니다. 그에 대한 답이 될 수 있는 것은 ConstructorBinding 어노테이션을 쓰는 것입니다. ConfigurationProperties 어노테이션을 보면, 세터를 쓰거나, ConstructorBinding을 쓸 수 있다고 되어 있습니다. binding을 하는 방법에는, 세터 메서드 말고도, 생성자로 할 수 있다는 이야기입니다. 그래서 위에 해당 어노테이션을 적어 주었습니다. 해당 어노테이션에 대한 ..
저번 시간에 설정 파일을 분리하는 것을 했었습니다. 이번에는 properties 파일의 설정값을 불러와 보겠습니다. 프로젝트 구조는 위와 같습니다. 다른 건 없습니다만, com.example.demo.init에 ConfigureSource 클래스가 추가되었습니다. application.properties에는 spring.profiles.active가 있습니다. 이것의 설정값은 B입니다. 이 값을 참조해서, 설정값을 불러온다고, 이 글에서 이야기를 했던 기억이 납니다. 만약에, 이 값이 B라면 application-B.properties를 참조하게 될 건데요. 이 안에 있는 셋팅 값을 보겠습니다. spring.server.port가 7776입니다. A의 셋팅값은 spring.server.port 값이 77..
최근댓글