개발서적
[토비의 스프링 - Vol.2] 1장 - 1.5 스프링 3.1의 IoC 컨테이너와 DI
1.5 스프링 3.1의 IoC 컨테이너와 DI스프링 3.1에 새롭게 도입된 IoC/DI 기술은 두가지강화된 자바 코드 빈 설정런타임 환경 추상화가장 큰 특징은 자바 코드를 이용한 설정 메타정보 작성이 쉽다는 점XML을 사용하지 않거나 최소화한 채로 스프링 애플리케이션 개발이 가능XML 설정을 사용하면 애플리케이션을 운영, 유지보수하는 여러면에서 유리반대로 자동인식과 관례를 최대한 활용해서 명시적인 설정정보의 양을 최소화하고 툴의 지원을 통해 편리하고 안전하게 개발할 수 있는 자바 코드 방식이 선호되기도 함 1.5.1 빈의 역할과 구분빈의 종류애플리케이션 로직 빈스프링에서 말하는 빈은 IoC/DI 컨테이너에 의해 생성되고 관리되는 오브젝트일반적으로 애플리케이션의 로직을 담고 있는 주요 클래스의 오브젝트가 ..
[토비의 스프링 - Vol.2] 1장 - 1.4 기타 빈 설정 메타정보
1.4.1 빈 이름XML 설정에서의 빈 식별자와 별칭빈 아이디와 빈 이름은 특정 빈을 구분하기 위해 사용되는 빈 식별자빈은 하나 또는 그 이상의 식별자를 가질 수 있으며, 빈의 정의된 애플리케이션 컨텍스트 내에서 고유해야 함빈의 식별자는 XML이라면 태그의 id와 name 두 가지 애트리뷰트를 이용해 정의idid를 식별자로 지정하는 경우 ID 타입의 아래의 기준이 필요id에는 공백이 들어갈 수 없다.첫 글자는 알파벳과 밑줄(_) 그리고 허용된 일부 언어문자만 사용될 수 있다.나머지 글자는 알파벳과 밑줄, 그리고 숫자와 점(.)을 허용한다. 그 외의 특수문자는 사용할 수 없다. 관례적으로 id에 사용하는 값은 빈을 대표하는 타입 이름을 첫글자만 소문자로 바꿔서 사용UserService 타입의 빈을 id로 ..
[토비의 스프링 - Vol.2] 1장 - 1.3 프로토타입과 스코프
1.3.1 프로토타입 스코프스코프 스코프는 존재할 수 있는 범위를 가리키는 말이다. 빈의 스코프는 빈 오브젝트가 만들어져 존재할 수 있는 범위다. 빈 오브젝트의 생명주기는 스프링 컨테이너가 관리하기 때문에 대부분 정해진 범위의 끝까지 존재한다. 싱글톤 스코프는 컨테이너 스코프라고 하기도 한다. 단일 컨테이너 구조에서는 컨테이너가 존재하는 범위와 싱글톤이 존재하는 범위가 일치하기 때문이다. 요청(request) 스코프는 하나의 요청이 끝날때 까지만 존재한다. 싱글톤 스코프는 컨텍스트당 한 개의 오브젝트만 만들어지게 함하나의 빈을 여러 개의 빈에서 DI하더라도 매번 동일한 오브젝트가 주입 (DI, getBean(), 등)@Test public void singletonScope() { ApplicationC..
[토비의 스프링 - Vol.2] 1장 - 1.2.5 컨테이너가 자동등록하는 빈
1.2.5 컨테이너가 자동등록하는 빈스프링 컨테이너는 초기화 과정에서 몇 가지 빈을 기본적으로 등록 (자주 사용 X) ApplicationContext, BeanFactory스프링에서는 컨테이너 자신을 빈으로 등록해두고 필요하면 일반 빈에서 DI 받아 사용 가능스프링 컨테이너는 ApplicationContext 인터페이스를 구현체@Autowired로 자동와이어링을 이용하는 방법이 가장 쉬운 방법 (@Resource도 사용 가능)public class SystemBean { @Autowired ApplicationContext context; public void specialJobWithContext() { this.context.getBean(...); } }애노테이션을 이용한 설정을 못쓴다면 Appl..
[토비의 스프링 - Vol.2] 1장 - 1.2.4 프로퍼티 값 설정 방법
1.2.4 프로퍼티 값 설정 방법DI를 통해 빈에 주입되는 것은 두가지다른 빈 오브젝트의 래퍼런스 단순 값 (빈이 아닌 모든 것) 메타정보 종류에 따른 값 설정 방법값을 넣는 방법도 네가지로 구분이 가능1. XML:와 전용 태그는 ref 애트리뷰트를 이용해 다른 빈의 아이디 지정이 가능ref 대신 value 애트리뷰트를 사용하면 런타임시 주입할 값으로 인식String이 가장 간단한 타입이며, int, float, double, boolean, 등 기본 타입이거나 Class Resource같은 단순하지 않은 오브젝트는 적절한 변환이 필요스프링 컨테이너는 XML의 문자열로 된 값을 프로퍼티 타입으로 변환하는 서비스를 내장2. 애노테이션:@Value빈이 사용해야할 단순한 값이나 오브젝트를 런타임시에 주입해야하..
[토비의 스프링 - Vol.2] 1장 - 1.2.3 빈 의존관계 설정 방법
1.2.3 빈 의존관계 설정 방법빈 사이의 의존관계 메타 정보를 작성하는 방법은 여러 가지 기준으로 분류가 가능DI 할 대상을 선정하는 방법으로 분류할 경우명시적으로 지정하는 방법 (DI 할 빈의 아이디를 직접 지정)일정 규칙에 자동으로 선정하는 방법 (자동와이어링autowiring)메타정보 작성 방법으로 분류할 경우XML , 스키마를 가진 전용태그, 어노테이션, 자바코드에 의한 직접적인 DI빈 스캐너에 의한 빈 등록 방법과 어노테이션 방식은 둘다 비슷하지만 의존관계 주입에 사용되는 어노테이션은 빈 스캐너에 의해 등록될 때만 사용되는게 아니라는 점에서 차이가 발생빈 등록 방식과 빈 의존관계 주입 방법은 메타정보 작성 방법이 항상 같지 않음을 주의Ex) 태그를 사용해 빈을 등록하면서 의존관계 정보는 XML..
[자바 ORM 표준 JPA 프로그래밍] 16.2 2차 캐시
Reference. 자바 ORM 표준 JPA 프로그래밍 책 목차 및 이전 글 더보기 들어가기 전 JPA 특징, Q&A 1. JPA 소개 1.1 SQL을 직접 다룰 때 발생하는 문제점 1.2 패러다임의 불일치 1.3 JPA란 무엇인가? 2. JPA 시작 3. 영속성 관리 3.1 엔티티 매니저 팩토리와 엔티티 매니저 3.2 영속성 콘텍스트란? 3.3 엔티티의 생명주기 3.4 영속성 콘텍스트의 특징 3.5 플러시 3.6 준영속 4. 엔티티 매핑 4.1 - 4.3 @Entity, @Table, 다양한 매핑 4.4 - 4.5 데이터베이스 스키마 자동 생성, DDL 생성 기능 4.6 기본 키 매핑 4.7 필드와 칼럼 매핑: 레퍼런스 5. 연관관계 매핑 기초 5.1 단방향 연관관계 5.2 단방향 연관관계 5.3 양방..
[자바 ORM 표준 JPA 프로그래밍] 16.1 트랜잭션과 락
Reference. 자바 ORM 표준 JPA 프로그래밍 책 목차 및 이전 글 더보기 들어가기 전 JPA 특징, Q&A 1. JPA 소개 1.1 SQL을 직접 다룰 때 발생하는 문제점 1.2 패러다임의 불일치 1.3 JPA란 무엇인가? 2. JPA 시작 3. 영속성 관리 3.1 엔티티 매니저 팩토리와 엔티티 매니저 3.2 영속성 콘텍스트란? 3.3 엔티티의 생명주기 3.4 영속성 콘텍스트의 특징 3.5 플러시 3.6 준영속 4. 엔티티 매핑 4.1 - 4.3 @Entity, @Table, 다양한 매핑 4.4 - 4.5 데이터베이스 스키마 자동 생성, DDL 생성 기능 4.6 기본 키 매핑 4.7 필드와 칼럼 매핑: 레퍼런스 5. 연관관계 매핑 기초 5.1 단방향 연관관계 5.2 단방향 연관관계 5.3 양방..