Bean을 생성하는 3가지 방법 1. @Component 애노테이션으로 생성하기 스프링부트에서 가장 보편적으로 사용하는 방법으로 @Component 애노테이션을 사용할 수 있다. 개발자가 직접 작성한 Class에만 사용할 수 있다. @Component public class MyComponent1 implements InitializingBean { @Override public void afterPropertiesSet() throws Exception { System.out.println("MyComponent1.afterPropertiesSet"); } } 2. @Bean 애노테이션으로 생성하기 주로 외부 라이브러리의 객체들을 Bean으로 만들때 사용하거나, 같은 타입의 빈을 여러개 생성하고 싶을 ..
Spring Cloud Function(Spring Boot) 프로젝트를 AWS Lambda에 배포하는 방법에 대해 기록해보겠습니다. 1. 프로젝트 gradle 설정 샘플 ext { set('springCloudVersion', "2020.0.2") } dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" } } dependencies { implementation 'org.springframework.cloud:spring-cloud-function-adapter-aws' implementation 'com.amazonaws:aws-lambda-j..
스프링 빈(bean)은 쓰레드 세이프.. 하겠..지?? 빈(bean)은 개발자 입장에서 편리합니다. 스프링이 생성하고 관리하고 조립도 해주고 많은 제어를 많이 해주니까 말이죠. (어제까지만 해도) 저는 스프링 빈(bean)이라면 쓰레드 세이프 할 것이라는 무지에서 비롯된 믿음이 있었습니다. 하지만 스프링 빈(bean)은 근본적으로 쓰레드 세이프 하지 않습니다. 왜 쓰레드 세이프 하다고 오해했을까? 같이 공부하는 (주니어 개발자) 친구들에게 질문해봐도 이 부분에서 같은 오해를 하는 친구들이 많다는 걸 알 수 있었습니다. 왜 이런 오해를 하고 있을까요? 첫번째 이유는 많은 요청을 받는 멀티 쓰레드 환경에서 학습해보지 못한 경험상에 이유입니다. 두번째 이유는 (놀랍게도) 쓰레드 세이프하게 빈(bean) 클래스..
의존관계 DI를 알아보기 이전에 의존(Dependency)이라는 키워드에 대해서 알아봅시다. 예를들어, A라는 클래스가 B라는 클래스를 내부적으로 사용하게 되면 A는 B에게 의존하는 관계입니다. UML으로 표시하면 아래와 같습니다. 출처 : http://www.cs.utsa.edu/~cs3443/uml/uml.html 위의 UML을 보면 Person이라는 클래스가 Book이라는 클래스를 내부적으로 사용합니다. 그리고 Book이라는 클래스를 점선 화살표로 가르키게 되는데 이러한 관계를 Person이 Book에게 '의존'한다 라고 합니다. (추가적으로, DI를 처음 배울 때 이상한 점이 있었습니다. 스프링의 DI관계를 자세히 보면, 의존보다는 엄밀히 말해 '연관'이 맞다고 생각했습니다. 근데 왜 의존이라고 ..