본문 바로가기

Spring15

[Spring Boot] Error creating bean with name 'configurationPropertiesBeans' 에러 spring boot에서 spring cloud 의존성을 추가하니 Application이 실행되자마자 에러를 발생시켰습니다. 에러코드는 다음과 같습니다. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configurationPropertiesBeans' defined in class path resource [org/springframework/cloud/autoconfigure/ConfigurationPropertiesRebinderAutoConfiguration.class]: Post-processing of merged bean definition failed; nested exceptio.. 2022. 1. 26.
[Spring] 빈 생명주기 콜백 빈 생명주기 콜백에 대해 알아보자. 🔍 빈 생명주기 콜백 시작 데이터베이스 커넥션 풀이나 네트워크 소켓처럼 애플리케이션 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화와 종료 작업이 필요하다. 객체가 초기화되었을 때 해야하는 작업, 객체가 죽기 직전에 안전하게 메소드를 호출하는 방법 등 의 작업이 필요하다. 스프링 빈은 간단하게 다음과 같이 라이프사이클을 가진다. 객체성성 → 의존관계 주입 스프링 빈은 객체를 생성하고, 의존관계 주입이 끝난 다음에 필요한 데이터를 사용할 수 있는 준비가 완료된다. 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메소드를 통해서 초기화 시점을 알려주는 다양한 기능 제공 스프링은 스프링 컨테이너가 종료되.. 2022. 1. 19.
[Spring] 스프링 부트 Gradle 의존성 관리 및 Plugin 스프링 부트 Gradle Gradle 은 의존관계가 있는 라이브러리를 함께 다운로드 합니다. 예시로 살펴보도록 하겠습니다. 저는 프로젝트 생성시 의존성을 spring-boot-starter-thymeleaf 와 spring-boot-starter-web을 추가했습니다. 그래서 build.gradle을 보면 다음과 같이 의존성이 추가된 것을 볼 수 있습니다. 하지만 저는 두 개의 의존성만 추가했는데 실제 추가된 라이브러리를 보니 다음과 같이 추가되어 있었습니다. 어떻게 추가하지않은 다음과 같은 라이브러리들이 존재하는걸까요? 맨 처음 언급했듯이 Gradle은 의존관계의 라이브러리를 함께 다운로드합니다. Gradle 목록을 클릭하여 한 번 살펴보겠습니다. 의존성을 추가하겠다고 명시했던 thymeleaf와 we.. 2021. 12. 22.
[Spring] 스프링 시큐리티 알아보기 프로젝트를 진행하다가 비밀번호 암호화를 위해 스프링 시큐리티를 적용하려고 합니다. 사실 공식 문서를 보고, 구글링을 통해 알아보았지만 완벽하게 이해가 된 것 같지는 않습니다. 그래도 글을 작성하면 조금이라도 이해가 더 될까 싶어 작성하게 되었습니다. 💡 스프링 시큐리티(Spring Security)란 스프링 시큐리티는 인증, 권한 부여 및 일반적인 공격에 대한 보호를 제공하는 프레임워크입니다. 즉, 인증과 인가를 담당하는 프레임워크입니다. 그렇다면 인증과 인가는 무엇일까요? 보안 용어를 잠시 살펴보도록 하죠 접근 주체(Principal) : 보호된 리소스에 접근하는 대상 인증(Authentication) : 보호된 리소스에 접근한 대상에 대해 이 유저가 누구인지, 애플리케이션의 작업을 수행해도 되는 주체.. 2021. 12. 17.
[Spring] JUnit5 사용하기 인프런 학습을 하다보니 강의와 동일하게 설정을 해도 테스트 시 지원되지 않는 코드들이 꽤 존재했습니다. 이유를 살펴보니 인프런 강의는 JUnit4를 사용하고, 저는 JUnit5로 의존성을 추가했기 때문에 지원되는 메소드 및 어노테이션이 달랐습니다. 오늘은 JUnit5의 특징과 JUnit4와 다른점은 무엇인지 간략히 알아보겠습니다. 1. JUnit5 의 특징 이전 버전의 JUnit과는 달리 JUnit5는 세가지의 모듈로 구성됩니다. JUnit5 = JUnit Platform + JUnit Jupiter + JUnit Vintage JUnit Platform : JVM에서 실행되는 테스트 프레임워크로 테스트 프레임워크를 개발하기 위한 TestEngine API를 정의합니다. JUnit Jupiter : JU.. 2021. 12. 5.
[Spring] gradle build 실행 에러 프로젝트 회원가입 기능 구현을 마치고 build 테스트를 진행하였습니다. 하지만, develop 브랜치에 PR 을 올리니 local에서는 잘 build 가 잘만 되었었는데 PR 시 build 오류가 났습니다!! 맨 처음에는 mapperTest() ,serviceTest() 에서 오류가 난 것만 보고 local이랑 왜 다르지,, 하며 멘토님께 질문을 드렸습니다. caused by 가 중요한 데 그 부분을 안보고 질문을 드렸죠,,^^ 멘토님께서 로그를 보는 습관을 들이라고 말씀해주셨고 그때서야 caused by 부분을 보게 되었습니다..(반성😥) 현재 진행중인 프로젝트는 임시 DB로 in-memory 디비인 h2 디비를 사용하고 있습니다. 즉, 제 local 컴퓨터에는 존재하는 테이블이 다른 컴퓨터에서는 존.. 2021. 11. 21.
[Spring] @WebMvcTest 단위 테스트시 Bean 주입 에러 해결 들어가며.. 약..9시간..? 동안 삽질하게 했던 에러에 대해서 설명하려 합니다.. 9시간 넘게 헤매다가 너무나도 허무한 방법으로 해결했습니다 ^_ㅠ 발생한 오류 SpringBoot 에서 Controller 클래스를 테스트하는 코드를 작성하고 실행하니 다음과 같은 에러가 발생했습니다. Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userService'; nested exception is org.springframework.beans.facto.. 2021. 11. 21.
[Spring] RESTful API 🤷‍♂️ REST? REST API? RESTful API? REST 란 웹(HTTP)의 장점을 최대한 활용할 수 있는 아키텍쳐입니다. REST API(REpresentational State Transfer)는 REST 아키텍쳐 스타일을 따르는 API로, 웹상에서 사용되는 여러 리소스를 HTTP URI(Resourse)로 표현하고, 해당 리소스에 대한 행위를 HTTP Method( GET, POST, PUT, PATCH, DELETE )로 정의하여 특정한 형태(자원의 형태)로 전달하는 방식을 말합니다. RESTful API란 REST API 설계 가이드를 따라 API를 만들어 웹서비스를 제공하면 해당 웹 서비스는 RESTful하다고 말하며 RESTful 한 API를 RESTful API라고 합니다. R.. 2021. 11. 16.
[Spring] PSA - 일관성 있는 서비스 추상화 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 이 전글에서는 스프링 프레임 워크의 DI와 AOP에 대해 살펴봤다. 이제 마지막으로 살펴볼 스프링 삼각형의 요소는 PSA(Portable Service Abstraction). 즉, 일관성 있는 서비스 추상화다. 서비스 추상화의 예로 JDBC를 들 수 있다. JDBC라고 하는 표준 스펙이 있기에 오라클이든, MySQL이든 Connection, Statement, ResultSet을 이용해 공통된 방식으로 코드를 작성할 수 있다. 데이터베이스 종류에 관계없이 같은 방식으로 제어할 수 있는 이유는 디자인 패턴에서 설명했던 어댑터 패턴을 활용했기 때문이다. 이처럼 어댑터 패턴을 적용해 같은 일을 하는 다수의 기술을 공통의.. 2021. 10. 4.
[Spring] AOP 에 대해서 (2) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 이전글 : [Spring] AOP 에 대해서 (1) [Spring] AOP 에 대해서 (1) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 스프링의 3대 프로그래밍 모델 중 첫 번째인 DI를 지난 글에서 살펴봤다. 두 번째는 AOP이다. AOP는 Aspec yeoonjae.tistory.com 👌🏻 일단 덤벼 보자 - 용어편 용어 영한 사전 Aspect 관점, 측면, 양상 Advisor 조언자, 고문 Advice 조언, 충고 JoinPoint 결합점 PointCut 자르는 점 위의 표의 용어를 하나씩 알아보자. 🤷‍♂️ PointCut - 자르는 점? Aspect 적용 위치.. 2021. 10. 4.