DTO를 활용하여 ID값 만으로 JPA 연관관계 사용하기 우선 예제에 활용할 엔티티는 아래와 같다. 객체를 활용한 JPA 연관관계 사용 위의 코드는 Spring을 처음하는 사람에게 가장 익숙할 수 있는 JPA 연관관계를 사용하는 코드이다. 위의 코드를 사용하며 아래와 같은 sql 쿼리가 생성된다. 내가 필요한 것은 member의 id 값인데 mem...
Bean 초기화 Bean 초기화 메서드 Bean을 생성할 때 Bean의 메서드 하나를 지정해 초기화 콜백으로 사용할 수 있다. 이는 애플리케이션이 스프링과 결합하지 않게 할 때 유용하다. 즉, 스프링 기반 애플리케이션이 이전에 만들어진 빈이나 서드파티 벤더가 제공하는 빈을 사용해야 할 때 사용할 수 있을 것이다. 간단히 예제 코드를 작성해 보면 아...
룩업 메서드 주입 룩업 메서드 주입은, 싱글턴 빈이 비싱글턴 빈에 의존하는 상황같이 어떤 빈이 다른 라이프 사이클을 가진 빈에 의존할 때 발생하는 문제를 극복하기 위해 사용한다. 만약 비싱글턴 빈이 싱글턴 빈에 의존한다면 싱글턴빈은 비싱글턴 빈을 싱글턴으로 만들어 버린다. 또는 상황에 따라 싱글턴 빈은 자신에게 필요한 비싱글톤 빈 인스턴스를 매번 새로...
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 ...
비즈니스 인터페이스 위와 같은 비즈니스 메서드가 하나인 인터페이스가 있다고 생각해보자. 위의 경우에는 defineMeaningOfLife()를 어떻게 정의할 수 있을까? 위와 같이 정의할 수 있을 것 같다. 그렇다면 위와 같이 매번 반환 값을 일일이 지정하여 반환해야 할까? 그러고 싶지는 않을 것이다. 그럼 어떻게 할 수 있을까? 예시를 통해 ...
@Lazy @Lazy란? 빈을 느리게 초기화할지 여부를 나타낸다. @Component로 직접 또는 간접적으로 어노테이션이 달린 모든 클래스 또는 @Bean으로 주석이 달린 메서드에 사용할 수 있다. 이 어노테이션이 @Component 또는 @Bean 정의에 없으면 초기화가 진행된다. 만약 @Lazy 어노테이션이 true로 설정된 경우, @Bean ...
@Autowired 생성자, 필드, setter 메서드 또는 config 메서드가 Spring의 DI 주입 기능에 의해 autowired 되도록 한다. 이는 JSR-330 Inject 어노테이션의 대안으로, required 그리고 optional 의미를 추가한다. Autowired Constructors 주어진 Bean 클래스의 생성자 하나만 이 어...
IoC와 DI IoC IoC는 Inversion Of Control의 약어이다. 이는 제어의 역전이라는 뜻이다. 그렇다면 "제어(Control)의 관점이 전도(Inversion)된다는 것은 무엇일까?" 스프링은 스프링 컨테이너를 통해 IoC가 가능하도록 지원해준다고 한다. 우리는 무의식적으로 IoC를 적용하고 있었다. 그렇기에 우선 IoC가 적...