IoC와 DI IoC IoC는 Inversion Of Control의 약어이다. 이는 제어의 역전이라는 뜻이다. 그렇다면 "제어(Control)의 관점이 전도(Inversion)된다는 것은 무엇일까?" 스프링은 스프링 컨테이너를 통해 IoC가 가능하도록 지원해준다고 한다. 우리는 무의식적으로 IoC를 적용하고 있었다. 그렇기에 우선 IoC가 적...
@Autowired 생성자, 필드, setter 메서드 또는 config 메서드가 Spring의 DI 주입 기능에 의해 autowired 되도록 한다. 이는 JSR-330 Inject 어노테이션의 대안으로, required 그리고 optional 의미를 추가한다. Autowired Constructors 주어진 Bean 클래스의 생성자 하나만 이 어...
@Lazy @Lazy란? 빈을 느리게 초기화할지 여부를 나타낸다. @Component로 직접 또는 간접적으로 어노테이션이 달린 모든 클래스 또는 @Bean으로 주석이 달린 메서드에 사용할 수 있다. 이 어노테이션이 @Component 또는 @Bean 정의에 없으면 초기화가 진행된다. 만약 @Lazy 어노테이션이 true로 설정된 경우, @Bean ...
비즈니스 인터페이스 위와 같은 비즈니스 메서드가 하나인 인터페이스가 있다고 생각해보자. 위의 경우에는 defineMeaningOfLife()를 어떻게 정의할 수 있을까? 위와 같이 정의할 수 있을 것 같다. 그렇다면 위와 같이 매번 반환 값을 일일이 지정하여 반환해야 할까? 그러고 싶지는 않을 것이다. 그럼 어떻게 할 수 있을까? 예시를 통해 ...
Bean Bean 이란? Spring Framework 문서에 나온 Bean의 정의는 아래와 같다. > In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. > > A ...
룩업 메서드 주입 룩업 메서드 주입은, 싱글턴 빈이 비싱글턴 빈에 의존하는 상황같이 어떤 빈이 다른 라이프 사이클을 가진 빈에 의존할 때 발생하는 문제를 극복하기 위해 사용한다. 만약 비싱글턴 빈이 싱글턴 빈에 의존한다면 싱글턴빈은 비싱글턴 빈을 싱글턴으로 만들어 버린다. 또는 상황에 따라 싱글턴 빈은 자신에게 필요한 비싱글톤 빈 인스턴스를 매번 새로...
Bean 초기화 Bean 초기화 메서드 Bean을 생성할 때 Bean의 메서드 하나를 지정해 초기화 콜백으로 사용할 수 있다. 이는 애플리케이션이 스프링과 결합하지 않게 할 때 유용하다. 즉, 스프링 기반 애플리케이션이 이전에 만들어진 빈이나 서드파티 벤더가 제공하는 빈을 사용해야 할 때 사용할 수 있을 것이다. 간단히 예제 코드를 작성해 보면 아...
DTO를 활용하여 ID값 만으로 JPA 연관관계 사용하기 우선 예제에 활용할 엔티티는 아래와 같다. 객체를 활용한 JPA 연관관계 사용 위의 코드는 Spring을 처음하는 사람에게 가장 익숙할 수 있는 JPA 연관관계를 사용하는 코드이다. 위의 코드를 사용하며 아래와 같은 sql 쿼리가 생성된다. 내가 필요한 것은 member의 id 값인데 mem...
스트림과 비동기 > 해당 내용은 WifiObserver라는 와이파이 공유기의 접속 목록을 크롤링 하여 해당 정보를 활용하는 프로젝트를 수행하며 공부한 내용입니다. > > 깃 허브 바로가기 배경 현재 수행중인 프로젝트의 핵심 기능 중 하나로 "회원 공유기의 와이파이 설정 페이지에서 와이파이에 접속하여 있는 기기 목록을 크롤링"하는 기능이 있다. 프로젝...
테스트: 행위 검증과 상태 검증 > 해당 내용은 WifiObserver라는 와이파이 공유기의 접속 목록을 크롤링 하여 해당 정보를 활용하는 프로젝트를 수행하며 공부한 내용입니다. > > 깃 허브 바로가기 테스트 테스트를 통해 검증할 수 있는 것은 크게 아래 2가지라고 할 수 있다. 상태 검증 행위 검증 상태검증 우선 상태 검증이라는 것은 적절한 ...
로깅 그리고 MDC > 해당 내용은 WifiObserver라는 와이파이 공유기의 접속 목록을 크롤링 하여 해당 정보를 활용하는 프로젝트를 수행하며 공부한 내용입니다. > > 깃 허브 바로가기 이전까지 로그에 대해서 크게 신경 쓰지 않았던 것 같다. 그래서 API 요청, SQL 문과 같이 가장 기본적인 요소들에 대해서만 로깅을 하였다. "멀티 모듈 구...
자바빈 스타일(자바빈즈 패턴)은 아래의 3가지 메서드를 가지고 있는 클래스를 말한다.파라미터가 없는 디폴트 생성자프로퍼티를 설정할 수 있는 수정자 메서드프로퍼티를 조회할 수 있는 접근자 메서드해당 스타일을 통해 객체를 만든다고 하면 아래와 같은 장단점을 지니게 된다.장