본문 바로가기

공부이야기27

[Spring] IoC 컨테이너란? (IoC: Inversion of Control) IoC (Inversion of Control) 제어권의 역전 (일반적으로 제어권이란 자기가 사용할 의존성은 스스로 만들어서 사용하는 것을 의미) 제어권이 역전되었다는 것은 다른 누군가가 의존성을 외부에서 줌(DI: Dependency Injection 알아보기)을 의미한다. Spring IoC Container Bean을 구성하고 제공하는 컨테이너. 오브젝트에 대한 제어권을 코드 대신 갖고 있다고 해서 IoC라고 부른다. BeanFactory와 ApplicationContext 두 가지가 있다. BeanFactory Bean의 생성과 설정 및 관리를 맡고 있다. Bean을 등록, 생성, 조회, 반환 관리함. 보통은 이를 확장한 ApplicationContext를 사용함. getBean() 메소드가 정의.. 2021. 5. 2.
[Spring] Dependency Injection(DI) - 의존성 주입 의존성이란? 아래 코드 상를 보면 Room 클래스에서 turnOnLigh()가 호출되기 위해서는 Light 클래스가 필요하다. 이 때, Room 클래스는 Light 클래스에 의존성을 가진다 라고 한다. class Room { private Light light; public Room() { this.light = new Light(); } public turnOnLignt() { this.light.turnOn(); } } 위와 같이 설계하였을 경우, Light 클래스가 수정되었을 때 Room 클래스도 함께 수정해 줘야 하는 문제가 발생한다. 그럼 어떻게 변경해야 하는 것일까? 의존성 주입(DI)이란? 의존성 주입이란 필요한 객체를 직접 생성하는 것이 아니라 외부로부터 필요한 객체를 받아서 사용하는 것... 2021. 5. 2.
[DB] Entity와 DTO (그리고 VO) Entity 실제 DataBase의 테이블과 1:1로 매핑되는 클래스 DB의 테이블 내에 존재하는 컬럼만을 속성(필드)으로 가져야 한다. Entity 클래스는 상속을 받거나 구현체여서는 안 되며, 테이블 내에 존재하지 않는 컬럼을 가져서도 안 된다. Entity Setter 금지 및 생성자, 접근 제어 Entity를 작성할 때 setter를 무분별하게 사용하면 객체의 값을 변경할 수 있어 객체의 일관성을 보장할 수 없다. 일관성을 유지할 수 있어야 유지 보수성이 올라가기 때문에 Setter를 사용하기 보다는 객체의 생성자에 값을 넣어줌으로써 setter 사용을 줄이는 것을 지향한다. DTO (Data Transfer Object) 계층간 데이터 교환을 위한 객체. (DB의 데이터를 Service나 Con.. 2021. 5. 1.
[Java] 자바는 Call by value? Call by reference? Call by value 변수의 값을 복사해 함수의 매개변수로 전달하는 것. 때문에 넘겨받은 함수의 인자값을 아무리 변경해도 외부에서는 그 값이 변경되지 않는다. 자바의 메소드 호출 방식에 대해 아래 예제를 통해 자세히 살펴보자. Example 1) swap() 함수를 통해 값을 변경한 듯 하지만 출력 결과는 swap전과 동일하다. 이는 x, y에는 a, b의 메모리 주소가 아니라 값만 복사되었기 때문이다. public class Test { public static void swap(int x, int y) { int temp = x; x = y; y = temp; } public static void main(String[] args) { int a = 10; int b = 20; System.out.. 2021. 4. 29.