전체 글

꾸준하게 열심히..
💐 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 @..

🌻 JAVA/정리정리정리

[Java] 스택(Stack) / 큐(Queue) 정리

Queue Queue queue = new ArrayDeque(); Queue queue = new LinkedList(); Queue는 Interface이기 때문에, 위와같이 해당 인터페이스를 구현하는 두 가지 클래스로 생성하여, 저장할 수 있다. 이론적으로는 연결리스트의 특성을 갖는 LinekdList가 효율이 좋아야 하지만, 실제로는 여러 이유때문에 ArrayDeque이 속도가 조금 더 빠르다고 한다. 어차피 알고리즘 문제 내에서 큰 차이는 없을 것 같으니 아무거나 쓰자. LinkedList qu = new LinkedList();//큐의 생성 //DeQue qu = new ArrayDeque(); //add()메소드를 이용한 저장 qu.add("넷"); qu.add("둘"); qu.add("셋")..

카테고리 없음

맥(Mac) 단축키

보호되어 있는 글입니다.

💐 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를 구현하고 있..

iseunghan
iseunghan