반응형 개발139 SLF4J, Logback 개념 이번에는 맨날 단순히 사용하기만 한 SLF4J와 Logback 개념을 정리해보려고한다. SLF4J SLF4J란 The Simple Logging Facade for Java의 약어다. 쉽게 말하면 SLF4J 자바 진영의 로깅 프레임워크 인터페이스이며 개발자가 배포 시 원하는 로깅 프레임워크를 연결할 수 있도록 도와준다. 즉 다양한 로깅 프레임워크 구현체들 (java.util.logging, logback 및 reload4j)을 쉽게 갈아끼워서 사용할 수 있게 도와준다. 그럼 이제 공식 문서에서 소개하는 SLF4J 내용에 대해 정리해보겠다. 레거시 로깅 API 사용 시 SLF4J 사용 만약 프로젝트에서 사용하는 로깅 프레임워크가 SLF4J 이외의 로깅 API에 의존한다고 생각해보자. 기존의 로깅 프레임워크.. 개발/Spring Boot 2022. 10. 10. Authentication of controller parameters is null using Spring security 제목이 너무 길어져서 영어로 한 번(?) 써봤습니다. 번역하면 스프링 시큐리티를 사용할 때 스프링 MVC 컨트롤러에 파라미터로 Authentication이 null로 들어온다! 바로 시작하겠습니다. 스프링 시큐리티와 스프링 MVC를 사용하면 다음과 같이 Authentication을 파라미터로 받을 수 있다는 내용이 굉장히 많다. 그러나 필자의 디버깅을 통해서는 authentication은 계속 null 값만 들어온다. 이번에는 이를 해결한 과정을 적어보려고 한다. 굉장히 간단하다. 일단 아래와 같이 검색을 해보았다. (어설픈 영어 실력은 덤) 그랬더니 아래와 같은 클래스가 눈에 띄였다. AuthenticationPrincipalArgumentResolver!!!! 바로 인텔리제이에 들어가서 검색을 해보았.. 개발/Spring Security 2022. 9. 21. Spring Boot에서 build.gradle은 의존성 관리를 어떻게 하는걸까? 먼저 이전에 우아한 스프링 부트에 대한 공부 기록을 남기면서 의문점이 한 가지 남아있었다. 이전 우아한 스프링 부트에 대한 공부 기록이 남아있는 게시글은 아래와 같다. https://devdebin.tistory.com/229?category=1039778 우아한 스프링 부트 공부 기록 스프링 부트 스프링 부트는 스프링을 쉽게 제공하기 위해 제공되는 툴이다. 참고로 스프링이란 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크다. 스프링 devdebin.tistory.com 우리 개발자들은 스프링 부트를 사용하면서 직접적인 의존성의 버전을 적지 않아도 구체적인 의존성의 버전을 가져온다. maven의 경우는 pom.xml 파일에서 parent가 버전을 이미 다 알고 있기 때문이었.. 개발/Spring Boot 2022. 9. 15. 우아한 스프링 부트 공부 기록 스프링 부트 스프링 부트는 스프링을 쉽게 제공하기 위해 제공되는 툴이다. 참고로 스프링이란 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크다. 스프링 부트가 제공하는 3가지 큰 영역 빌드 : 프로젝트 생성, 의존성 관리, 애플리케이션 패키징 및 실행 코딩 : 개발 툴 제공, 자동 설정, 외부 설정 배포 및 관리 : 도커 이미지 생성, Actuator, 스프링 부트 어드민 빌드 프로젝트 생성 https://start.spring.io/ 여기에서 스프링 프로젝트를 만든다. 들어가면 다음과 좌측면에 같은 화면이 나온다. 스냅샷(SNAPSHOT)은 개발 중인 버전. 가급적이면 사용하지 말자. M(Milestone) 버전 배포는 했지만 바뀔 수 있는 버전. 공부하지 않는 이상 사용하.. 개발/Spring Boot 2022. 7. 30. 스프링 AOP 주의사항 본 게시글은 인프런 김영한 선생님 강의 스프링 고급편을 완강하고 배운 것을 남기고자 적은 포스팅입니다. 강의 링크는 아래와 같습니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B3%A0%EA%B8%89%ED%8E%B8/dashboard 스프링 핵심 원리 - 고급편 - 인프런 | 강의 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 포스팅을 하지는 않았지만 스프링 AOP를 배우면서 스프링 AOP 구현 방법을 배웠고, 어드바이스와 포인트컷에 관한 구체적인 내용을.. 개발/Spring Core 2022. 7. 12. 스프링 AOP 본 게시글은 인프런 김영한 선생님 강의 스프링 고급편을 완강하고 배운 것을 남기고자 적은 포스팅입니다. 강의 링크는 아래와 같습니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B3%A0%EA%B8%89%ED%8E%B8/dashboard 스프링 핵심 원리 - 고급편 - 인프런 | 강의 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com AOP 비즈니스에는 핵심 기능과 부가 기능이 존재한다. 예를 들어 MemberService는 회원 관리 로직이 핵심 기능이다. M.. 개발/Spring Core 2022. 7. 10. @Aspect AOP 본 게시글은 인프런 김영한 선생님 강의 스프링 고급편을 완강하고 배운 것을 남기고자 적은 포스팅입니다. 강의 링크는 아래와 같습니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B3%A0%EA%B8%89%ED%8E%B8/dashboard 스프링 핵심 원리 - 고급편 - 인프런 | 강의 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 우리는 저번 포스팅 마지막 부분에서 자동 프록시 생성기가 어드바이저를 자동으로 스프링 빈으로 등록시키는 것을 학습했다. 스프링은 .. 개발/Spring Core 2022. 7. 9. 스프링 빈 후처리기 본 게시글은 인프런 김영한 선생님 강의 스프링 고급편을 완강하고 배운 것을 남기고자 적은 포스팅입니다. 강의 링크는 아래와 같습니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B3%A0%EA%B8%89%ED%8E%B8/dashboard 스프링 핵심 원리 - 고급편 - 인프런 | 강의 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 스프링 빈 후처리기 필자는 이전에 스프링 기초를 학습하면서 스프링 컨테이너에 빈이 등록될 때 순수한 빈 인스턴스가 아니라, CGL.. 개발/Spring Core 2022. 7. 8. Spring Interceptor 경로에서 Swagger 경로 제거 시 발생 오류 UMC 동아리에서 앱을 만드는 팀 프로젝트를 진행 중인데 한 가지 오류가 발생했다. 바로 JWT를 사용해서 로그인을 진행할 때 스프링 인터셉터를 사용 중인데 스웨거 경로를 exclude하자 오류가 발생했다. 파파고로 내용을 해석하면 아래와 같았다. "기본 URL을 유추할 수 없습니다. 이는 동적 서블릿 등록을 사용하거나 API가 API 게이트웨이 뒤에 있을 때 흔히 발생합니다. 기본 URL은 모든 스웨거 리소스가 제공되는 루트입니다. 예를 들어 http://example.org/api/v2/api-docs에서 api를 사용할 수 있는 경우 기본 URL은 http://example.org/api/입니다. 위치를 수동으로 입력하십시오." 처음 파파고를 돌려보고 '뭔 소리지..?'라는 생각이 들었다. 기존에 .. 개발/Spring MVC 2022. 7. 8. 스프링 동적 프록시 본 게시글은 인프런 김영한 선생님 강의 스프링 고급편을 완강하고 배운 것을 남기고자 적은 포스팅입니다. 강의 링크는 아래와 같습니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B3%A0%EA%B8%89%ED%8E%B8/dashboard 스프링 핵심 원리 - 고급편 - 인프런 | 강의 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 스프링 동적 프록시에 관한 강의 파트를 이전, 강의에서 기초적인 동적 프록시에 대해 학습했는데 중요한 내용은 다음과 같다. 프록시.. 개발/Spring Core 2022. 7. 7. ThreadLocal ThreadLocal 쓰레드 로컬은 해당 쓰레드만 접근할 수 있는 특별한 저장소다. 쓰레드 로컬을 사용하면 각 쓰레드마다 별도의 내부 저장소를 제공한다. 따라서 같은 인스턴스의 쓰레드 로컬 필드에 접근해도 문제 없다. 여러 쓰레드가 같은 인스턴스의 멤버 변수에 접근하면 처음 쓰레드가 보관한 데이터가 사라질 수 있는데, 이런 경우 쓰레드 로컬을 사용하면 데이터를 안정적으로 접근하고 사용할 수 있다. thread-A 가 userA 라는 값을 저장하면 쓰레드 로컬은 thread-A 전용 보관소에 데이터를 안전하게 보관한다. thread-B 가 userB 라는 값을 저장하면 쓰레드 로컬은 thread-B 전용 보관소에 데이터를 안전하게 보관한다. 자바는 언어차원에서 쓰레드 로컬을 지원하기 위한 java.lang.. 개발/Java 2022. 6. 27. 스프링 트랜잭션 전파 본 게시글은 인프런 김영한 선생님 강의 스프링 DB 2편을 완강하고 배운 것을 남기고자 적은 포스팅입니다. 강의 링크는 아래와 같습니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-2/dashboard 스프링 DB 2편 - 데이터 접근 활용 기술 - 인프런 | 강의 백엔드 개발에 필요한 DB 데이터 접근 기술을 활용하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의 소개 | 인 www.inflearn.com 이번 파트는 특히 놀라웠다. 이런 깊은 내용을 어떻게 학습하신지.. 선생님의 노하우가 궁금해지는 파트였다. 스프링 트랜잭션 전파에 대한 내용을 .. 개발/Spring DB 2022. 6. 25. 이전 1 2 3 4 5 6 7 ··· 12 다음 반응형