[Spring]스프링 @Autowired 의 위험성과 생성자 주입을 추천하는 이유
·
Spring
😀서론스프링의 빈 의존성 주입에 대한 개념을 다시 한번 정리하며,이와 관련된 현업에서 내가 저질렀던? 실수와 공부에 대한 기록을 하기 위해 작성하게 되었다.대부분의 경우 @Autowired 를 활용한 필드 주입을 추천하지 않는다고만 하지추천하지 않는 설명을 본 경험이 거의 없다고 생각하기 때문이다. 😀너무 간단하게 생각했던 스프링 빈 주입 방식에 대한 방심스프링에서 존재하는 등록된 빈에 대한 의존성 주입 방식에는 대표적으로필드주입생성자 주입setter 주입이중 내가 직접적으로 설명할 것은 필드주입을 추천하지 않는 이유와 왜? 스프링에서는 생성자 주입을 추천하는지에 대하여 기록하기 위해 작성하게 되었다. (setter 주입이 궁금하다면 다른 블로그를 참고하는 것도 좋은 방법이다.)왜냐하면 내가 이러한 ..
[Spring] 아파치 톰캣 그리고 서블릿, 서블릿 컨테이너, 스프링 컨테이너의 관계
·
Spring
😀고민과 정리의 이유최근 회사에 입사를 하고 나서 회사에서 운영하는 서비스에 대한 학습을 진행하게 되었습니다.현재 운영중인 서비스는 엄청 오래된 서비스이기 때문에 서버에 대한 구성과 이해하기 위해 좀 더 심도 있는 학습의 필요성을 느끼게 되었습니다.최근 진행했던 개인 프로젝트 같은 경우 스프링 부트를 이용한 내장형 톰캣을 사용하게 되면서 자연스럽게 넘어간 부분을 바로 잡아야겠다는 생각을 하게 되었습니다.회사에서 운영하는 서비스의 구성으로는스프링 프레임워크톰캣을 중심으로 서비스를 구성하고 있습니다.따라서, 이번에는 지금까지 학습을 하면서 이해했던 스프링 부트가 대신 해주던 일을 직접 이해하는 과정에 대하여 정리하려 합니다. 크게 다시 정리하자면 웹서버(Web Server) -> 웹 어플리케이션 서버(WA..
스프링이 사랑한 디자인 패턴 - 어댑터 패턴(AdapterPattern)
·
Spring
🌏 어댑터 패턴이 뭘까? 어댑터 패턴은 이름에서도 알 수 있듯이 어댑터의 역할을 하는 패턴을 만들어두고 연결고리?의 역할을 하는 패턴이다. 이게 무슨 말인지 이해가 안될 수 있으니 하나의 예시를 두고 이어나가 보겠다. A가 해외 여행을 가게 되었다. 핸드폰을 충전하기 위해 충전기를 찾아 충전을 하려 했지만,우리나라와 다른 110v 사용하는 것이었다. 이럴줄 알고 A는 어댑터를 준비해왔다. 문제 없이 충전을 할 수 있었고, 문제는 해결 되었다. 이 예시와 같이 어댑터 패턴은 "호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 두는 패턴이다." 어댑터 디자인 패턴은 서로 다른 두 인터페이스 간의 호환성을 제공하기 위한 패턴이다. 아래에는 객체 어댑터 패턴의 간단한 Java 코드 예시를..
스프링이 사랑한 디자인 패턴
·
Spring
어댑터 패턴 어댑터를 번역하면 변환기라고 할 수 있다. 변환기의 역할은 서로 다른 두 인터페이스 사이에 통신이 가능하게 하는 것이다. 주변에서 가장 흔히 볼 수 있는 변환기로는 충전기가 있다. 휴대폰 충전기의 경우 휴대폰을 직접 전원 콘센트에 연결할 수 없기 때문에 충전기가 핸드폰과 전원 콘센트 사이에서 둘을 연결해주는 변환기의 역할을 수행한다. 데이터베이스 관련 프로그램을 작성해 본 독자라면 다양한 데이터베이스 시스템을 공통의 인터페이스 ODBC 또는 JDBC를 이용해 조작할 수 있다는 사실을 알고 있다. 즉, 어댑터 패턴은 합성, 즉 객체를 속성으로 만들어서 참조하는 디자인 패턴으로, 한 문장으로 정리하면 다음과 같다. 호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호..
스프링 빈 라이프 사이클(life cycle)
·
Spring
스프링 빈 라이프 사이클 스프링 컨테이너 생성 -> 스프링 빈 객체 생성 -> 의존 관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료 - 초기화 콜백: 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출 - 소멸전 콜백: 빈이 소멸되기 직전에 호출 "콜백"이라는 용어는 어떤 일련의 작업 중에 특정한 시점에 호출되는 함수 또는 메서드를 가리키는 프로그래밍 용어입니다. 이는 주로 비동기적인 이벤트 처리에서 사용되며, 어떤 이벤트가 발생하면 시스템이 특정 함수를 호출하여 그에 대한 응답을 처리합니다. 스프링의 빈 생명 주기에서의 콜백 메서드는 비슷한 개념입니다. 빈이 생성되거나 초기화되는 특정 시점에 호출되는 메서드가 있는데, 이 메서드들이 마치 시스템이 어떤 이벤트에 반응하여 특정..
스프링 빈과 스프링 컨테이너 (feat. 싱글톤)
·
Spring
출처 : 김영환 님 스프링 강의를 보고 생각 정리 이 게시글은 내가 정리하는 게시글로 자세한 정보를 얻고 싶다면 다른 블로그를 참고하길 바란다. 나의 생각을 적으거기 때문에 중간중간 잘못된 개념의 설명이 있을수 있기 때문이다. 우리는 순수 자바 객체만을 이용해 스프링의 간단한 스프링 빈 등록 방법을 따라할 수 있다. 자바 순수 객체를 통해 우리는 서비스(프로그램)의 구성 정보(ex. appconfig)를 지킬수 있다. 우리는 좋은 객체지향 설계 5원칙( SOLID ) 중에 OCP(개방 폐쇄의 원칙), DIP(의존 관계 역전 원칙) 을 챙기면서 설계를 하는 것이 좋다는 것을 알기 때문에 이런것을 지키며 설계를 해주게된다. OCP 같은 경우에는 주로 서비스가 이루어지는 영역의 변화를 주지않고 설정 정보를 담..