본문 바로가기

spring20

[Spring] Spring 프로젝트를 분석하는 방법 보통 프로젝트에 투입될 때, 아무것도 없는 상태에서 A-Z 까지 다 구현하기도하지만 실무에서는 보통은 누가 짜놓은 코드 위에 새로운 기능을 추가하는 경우가 많다. 스프링 개발자로 일하며 다양한 프로젝트에 투입되었지만 투입될 때마다 기존의 프로젝트 환경을 분석하는게 쉽지 않았다. 문서로 잘 정리된 프로젝트들도 있었지만 많은 프로젝트들이 프로젝트 코드레벨까지 뜯어보지 않으면 분석하기 힘들게 되어있었다. 최근에 여유시간이 조금 생겨 강의를 챙겨봤었는데, 이 강의에서 강사님이 Spring 프로젝트를 분석하는 좋은 방법을 알려주셔 복습차원에서 내용을 정리해보려고한다. https://zero-base.co.kr/category_dev_camp/cleancode_1book 한달한권 | 클린코드 | zero-base .. 2022. 1. 27.
Spring Bean Scope 일반적으로 Spring Bean은 xml 파일에 정의 된다. Spring bean 속성에는 - class : 정규화된 자바 클래스 명 - id : bean의 고유 식별자 - scope : 객체의 범위 - constructor-arg : 생성될 때 생성자에 전달될 인수 - property : 생성될 때 setter에 전달될 인수 - init-method : 초기화 메서드 - destory-method : 소멸 메서드 오늘 이 많은 속성 중에 scope에 대해 좀 자세하게 정리해두려고 한다. 스프링의 scope는 singleton, prototype, request, session, global session 이렇게 다섯 종류가 있다. scope Description singletone 하나의 빈 정의에 대.. 2021. 11. 2.
Spring Bean LifeCycle 하이.. 오늘은 Spring Bean의 라이프 사이클을 정리해두고자한다. 보통 스프링에서는 생성자 주입을 사용하지 않으면 객체를 생성한 뒤 에 의존 관계를 주입하고, 생성자 주입을 사용하면 객체 생성과 동시에 의존관계를 주입하게 된다. 여기서 빈을 관리하는 스프링 컨테이너는 빈 초기화부터 종료까지 생명주기를 가지는데 생명주기는 아래의 흐름을 따른다. 간단하게 설명하면 과정을 쭉 설명을 해보겠다. 먼저 xml 파일, config 클래스 , 어노테이션 등으로 설정 파일을 읽어 빈 객체를 인스턴스화 한다. 그 후에 빈 프로퍼티에 의존성 주입을 하고 Aware 관련 인터페이스가 구현되어 있으면 관련 메서드들 을 호출을 한다. 다음은 객체를 생성하는 생명주기 콜백 메서드인데 @PostConstruct, Initi.. 2021. 11. 2.
[Spring] JUnit5 생명 주기 정리 Spring으로 프로젝트를 진행하다보면 단위 코드를 테스트 해야할 일이 생긴다. 이때 대부분 JUnit 기반의 테스트를 작성하게 된다. 실제 JUnit을 이용해 테스트하는 방법은 아래의 링크를 참고하면 좋을듯하다. https://devkingdom.tistory.com/114 [Spring] JUnit을 활용한 스프링 메서드 모듈 테스트하기 하이 ...!! 여러분 !! 스프링은 TDD (Test Driven Development) 기반의 개발을 할 수 있도록 스프링 프로젝트를 만들때 알아서 테스트 환경을 세팅해준다. 우리는 거기다 코드를 작성해서 테스트를 하면된 devkingdom.tistory.com 다만 작성한 글에는 @Test로만 테스트 코드를 작성했는데, 실제로 테스트가 실행될 때 우리는 이 생명.. 2021. 10. 8.
[Spring] @Transactional 정리 하이 .. 요즘 지속적으로 JPA 에 대해 공부를 하고 있는데 JPA를 SpringBoot에서 사용하면서 습관적으로 생각하지 않고 CREATE, UPDATE, DELETE API 메서드를 만들때 @Transactional 어노테이션을 사용하였다. 그러다가 문득 @Transcational에 대해서 한번 정리를 해둬야 겠다는 생각을 했따. @Transactional 어노테이션을 통해 트랜잭션을 처리하는데 먼저 트랜잭션에 대해 구체적으로 알 필요가 있다. 트랜잭션에 대해 잘 기억이 나지 않으신 분들은 아래 링크를 참고 하자. https://devkingdom.tistory.com/270 [Database] 트랜잭션이란 뭘까? 오늘은 트랜잭션에 대해 정리를 해두려한다. 트랜잭션(Transaction)이란? 트랜.. 2021. 10. 7.
[Spring Cloud MSA] Eureka Server 구동하기 오늘은 Eureka Server를 직접 구동해보려고한다. Eureka는 MSA 에서 마이크로서비스들의 정보를 레지스트리에 등록할 수 있게 하고, 마이크로 서비스의 동적인 탐색과 로드밸런싱을 할 수 있게 도와주는 역할을 한다. Eureka는 Eureka Server와 Eureka Client (Zuul 과 마이크로서비스), 로 구성되는데, Eureka Server에는 마이크로서비스들에 대한 정보가 등록되어 있다. 1.MSA를 구성하는 서비스들의 정보(IP, Port, AppName, instanceId)를 Eureka Server에 전달 2. Service들이 정보를 사용하려 할때 정보를요청 3. 해당 정보를 이용하여 통신 수행 Intellij 환경에서 한번 프로젝트를 만들어보자. 이전에 내가 Spring.. 2021. 9. 10.
[Spring] gradle 프로젝트에서 어떤 라이브러리를 주입받았는지 알고 싶을 때 내가 시작한 프로젝트가 아니고 유지보수를 위해 건드는 프로젝트를 하다보면 이프로젝트에 어떤 라이브러리가 주입되어 있는지 알고 싶을때가 있다. 이때 프로젝트의 디렉토리로 가서 아래 내용을 쳐주면... ! 트리형태로 멋지게 라이브러리들이 쭈우우욱 나온다. ./gradlew dependencies --configuration compileClasspath 끝 2021. 6. 10.
[Spring] Spring에서 예외 처리하기 하이 ~~ 자바 기반의 개발을 했던 분들은 대부분 이 예외처리를 굉장히 골치아파 하셨을 것 같다. 예외처리는 굉장히 중요한 작업이다. 그러므로 우리는 프로그램의 기능을 작성하는 것 이상으로 예외처리를 잘 설계해서 개발해야한다. 자바 어플리케이션에서는 예외 발생 시 프로그램을 중지하고 예외객체를 던지는 식으로 예외가 처리되는데.. 이때 예외처리를 안해주면 클라이언트가 쌩으로 에러메시지를 받게 된다. 이건 완전 Trash 프로그램이다. ㅎㅎ (괜히 찔림...) 스프링의 가장 큰 장점 중 하나는 이 예외처리를 굉장히 간단하게 할 수 있다는 점인 것 같다. Spring 예외처리 방법 스프링 시스템은 전에도 설명한 것처럼 Layered 한 시스템이다. 고로 각 통신은 인접한 영역끼리 일어난다. 스프링에서 예외를 .. 2020. 4. 5.
[Debugging] java.lang.IllegalArgumentException: error Type referred to is not an annotation type Spring에서 별도로 사용할 Annotation을 만들어서 사용하다 아래의 에러가 발생했다 . org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'crudPjtApplication': Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error Type referred to is not an annotation type: tokenRequired at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCr.. 2020. 4. 5.