스프링 IoC 컨테이너의역할 빈 인스턴스 생성 의존 관계 설정 빈 제공 (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; } } IoC OwnerRepository라는 의존성을 OwnerController 에게 주입시킨다. -> 이것이 IoC..
IoC 란? Inversion of Control : 의존 관계 주입( Dependency Injection) 이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는게 아니라, 주입 받아 사용하는 방법을 말함 스프링 IoC 컨테이너 BeanFactory 애플리케이션 컴포넌트의 중앙 저장소 빈 설정 소스로 부터 빈 정의를 읽어들이고, 빈을 구성하고 제공한다. 컨테이너가 관리하는 객체를 빈(bean)이라고 하고, 이 빈(bean)들을 관리한다는 의미로 컨테이너를 빈 팩토리(BeanFactory) 라고 부른다. BeanFactory에 여러 가지 컨테이너 기능을 추가하여 애플리케이션 컨텍스(ApplicationContext)라고 부름 OwnerController 가 IoC 컨테이너 내부에 들어오..
@Autowired required : 기본값은 true (따라서 못 찾으면 애플리케이션 구동 실패) @Autowired라는 어노테이션이 없는데 어떻게 빈으로 등록이 된걸까? 어떤 빈이 되는 클래스의 생성자가 오직 하나만 있고 그 생성자의 매개변수 타입이 빈으로 등록이 되어있다면 @Autowired가 없더라도 자동으로 주입을 시켜준다. Repository라는 interface 를 구현한 interface는 Spring Data JPA에서 .. LifeCycle .. 어쩌고 에서 bean으로 자동으로 등록해준다.... 그래서 따로 @Autowired라는 어노테이션이 없어도 bean으로 등록이 된다. 이렇게 되면 @Autowired 라는 어노테이션이 점점 사라진다고 한다. 이런식으로 코드를 짜면. 사용할 수..
컴포넌트 스캔 주요 기능 스캔 위치 설정 @Configuration 으로 등록된 클래스의 패키지 내에서만 빈을 찾아서 등록한다. @SpringBootApplication @SpringBootAplication는 auto-configuration을 담당한다. application class에서 extra configuration을 정의하거나 component scan을 해준다. @SpringBootApplication 하나만으로 @EnableAutoConfiguration,@ComponentScan,@Configuration세 가지 Annotation을 사용한 것과 같은 동작을 할 수 있다. 필터 : 어떤 애노테이션을 스캔 할지 또는 하지 않을지 @Component @Repository @Service @..
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("셋")..