💐 Spring

💐 Spring/Spring 핵심 기술

3. IoC 컨테이너 3부 : @Autowired

@Autowired required : 기본값은 true (따라서 못 찾으면 애플리케이션 구동 실패) @Autowired라는 어노테이션이 없는데 어떻게 빈으로 등록이 된걸까? 어떤 빈이 되는 클래스의 생성자가 오직 하나만 있고 그 생성자의 매개변수 타입이 빈으로 등록이 되어있다면 @Autowired가 없더라도 자동으로 주입을 시켜준다. Repository라는 interface 를 구현한 interface는 Spring Data JPA에서 .. LifeCycle .. 어쩌고 에서 bean으로 자동으로 등록해준다.... 그래서 따로 @Autowired라는 어노테이션이 없어도 bean으로 등록이 된다. 이렇게 되면 @Autowired 라는 어노테이션이 점점 사라진다고 한다. 이런식으로 코드를 짜면. 사용할 수..

💐 Spring/Spring 핵심 기술

4. IoC 컨테이너 4부 : @Component와 컴포넌트 스캔

컴포넌트 스캔 주요 기능 스캔 위치 설정 @Configuration 으로 등록된 클래스의 패키지 내에서만 빈을 찾아서 등록한다. @SpringBootApplication @SpringBootAplication는 auto-configuration을 담당한다. application class에서 extra configuration을 정의하거나 component scan을 해준다. @SpringBootApplication 하나만으로 @EnableAutoConfiguration,@ComponentScan,@Configuration세 가지 Annotation을 사용한 것과 같은 동작을 할 수 있다. 필터 : 어떤 애노테이션을 스캔 할지 또는 하지 않을지 @Component @Repository @Service @..

💐 Spring/Spring 핵심 기술

빈을 등록하고 의존성 주입하는 방법

빈 이란? 스프링 IoC 컨테이너가 관리 하는 객체 스프링 IoC 컨테이너란? BeanFactory 를 확장하는 ApplicationContext를 많이 사용한다. 컨테이너가 하는 일 : 빈 설정 소스로 부터 빈 정의를 읽어들이고, 빈을 구성하고 제공한다. ( 빈 인스턴스 생성, 의존 관계 설정, 빈 제공) 장점 1. 의존성 관리 2. 스코프 - 싱글톤 (기본값) : 하나의 객체만 사용 -> 빠른 성능 - 프로토타입 : 매번 다른 객체 3. 라이프사이클 인터페이스 빈 등록 하는 방법 두가지 1. 고전적인 방식의 빈 등록 방법 - ApplicationContext (XML) 단점 : 일일히 하나하나 빈을 등록해야 한다는 불편함이 있다. 2. 어노테이션을 이용한 빈 등록 방법 ( Java ) package ..

💐 Spring/Spring 핵심 기술

PSA( Portable Service Abstract )

PSA 란 ? 잘 만든 인터페이스 나의 코드 확장성이 좋지 못한 코드 or 기술에 특화되어 있는 코드 나의 코드 +++++++++ 잘 만든 인터페이스(PSA) ++++++++++++++++ 확장성이 좋지 못한 코드 or 기술에 특화되어 있는 코드 스프링 트랜잭션 @Transactional 이라는 annotation을 처리하는 Aspect 가 있다. 그 Aspect에서는 *PlatformTransactionManager 라는 인터페이스를 사용해서 코딩을 해놨다. * 잘 만든 인터페이스(PSA) 의 예 그렇기 때문에 PlatformTransactionManager 의 여러 구현체들이 바뀌더라도, 트랜잭션의 Aspect 코드는 바뀌지가 않는다. 여기서는 Repository 라는 interface를 구현하고 있..

💐 Spring/Spring 핵심 기술

AOP (Aspect-Oriented Programming)

AOP 의 핵심 : 흩어진 코드를 한곳으로 모으는 코딩 기법 흩어진 AAAA 와 BBBB class A { method a () { AAAA 오늘은 7월 4일 미국 독립 기념일이래요. BBBB } method b () { AAAA 저는 아침에 운동을 다녀와서 밥먹고 빨래를 했습니다. BBBB } } class B { method c() { AAAA 점심은 이거 찍느라 못먹었는데 저녁엔 제육볶음을 먹고 싶네요. BBBB } } AAAA , BBBB 를 밖으로 빼버린다. 모아 놓은 AAAA 와 BBBB class A { method a () { 오늘은 7월 4일 미국 독립 기념일이래요. } method b () { 저는 아침에 운동을 다녀와서 밥먹고 빨래를 했습니다. } } class B { method c..

💐 Spring/Spring 핵심 기술

IoC (Inversion of Control) , DI (Dependency Injection)

IoC 란? Inversion of Control ( 제어권 역전 ) (IoC 예시) 객체를 내가 직접 new 생성 (IoC 적용 x) class OwnerController{ private OwnerRepository repository = new OwnerRepository(); } IoC 를 이용한 의존성 주입 (IoC 적용 o) class OwnerController{ private OwnerRepository repo; public OwnerController(OwnerRepository repo){ //생성자를 통해 매개변수로 객체를 받는다 this.repo = repo; } } OwnerRepository는 OwnerController의 의존성이다. ->OwnerRepository가 있어야 ..

iseunghan
'💐 Spring' 카테고리의 글 목록 (13 Page)