본문 바로가기

Develop/Spring47

[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에서 랜덤 port 로 서비스 여러 서비스 띄우기 지난 포스팅에서 Eureka Server 를 이용하여 Service 여러개를 띄우는 것을 포스팅 했었다. https://devkingdom.tistory.com/282 [Spring Cloud MSA] Eureka Client Service 만들어 Eureka Server 에 올리기 저번 포스팅에서 Eureka Server를 올린 적있다. https://devkingdom.tistory.com/280 [Spring Cloud MSA] Eureka Server 구동하기 오늘은 Eureka Server를 직접 구동해보려고한다. Eureka는 MSA 에서 마이크로서비.. devkingdom.tistory.com 일단 랜덤으로 port를 띄우려면 port 번호를 0으로 입력해주면 된다. 그리고 두개의 어플리케이.. 2021. 9. 17.
[Spring Cloud MSA] Eureka Client Service 만들어 Eureka Server 에 올리기 저번 포스팅에서 Eureka Server를 올린 적있다. https://devkingdom.tistory.com/280 [Spring Cloud MSA] Eureka Server 구동하기 오늘은 Eureka Server를 직접 구동해보려고한다. Eureka는 MSA 에서 마이크로서비스들의 정보를 레지스트리에 등록할 수 있게 하고, 마이크로 서비스의 동적인 탐색과 로드밸런싱을 할 수 있게 도와주 devkingdom.tistory.com 오늘은 MSA Service를 하나 만들어 올려보려고한다. 저번에는 윈도우 환경이었는데... 오늘은 mac 환경에서 작업을 해보고자한다. 일단 프로젝트를 하나만들자. spring.start.io 에 접속해서 프로젝트를 하나 만들자. 여기서 Dependeciessms - Eu.. 2021. 9. 13.
[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.
[JPA] Entity의 4가지 상태 하이 ... 오늘은 엔티티의 4가지 상태를 나타내는 Entity의 생명주기를 정리해 두려고 한다. Entity LifeCycle 1. 비영속 상태 (new / transient) Book book = new Book(); // 단순하게 객체로 생성된 상태임. - 순수한 객체 상태 - 영속성 컨텍스트와 관련이 아예 없는 상태를 의미 2. 영속 상태 (managed) em.persist(book); // 객체를 영속성 컨텍스트에 저장한 상태 - EntityManager를 통해 엔티티를 영속성 컨텍스트에 저장한 상태 - 영속성 컨텍스트가 해당 엔티티를 관리하게 된 상태임 3. 삭제 (removed) em.remove(book); // 영속성 컨텍스트, db에서 삭제 - 엔티티를 영속성 컨텍스트와 db에서 삭제.. 2021. 8. 8.