BackEnd
예제로 배우는 스프링 프레임워크 입문 - 스프링 AOP
AOP 소개 Aspect Oriented Programming 흩어진 코드를 한 곳으로 모아 Spring -> IOC, AOP, PSA (Spring Triangle) @Transactional -> AOP 기반 어노테이션 흩어진 AAAA 와 BBBB class A { method a () { AAAA -> AAA 오늘은 7월 4일 미국 독립 기념일이래요. BBBB -> BB } method b () { AAAA -> AAA 저는 아침에 운동을 다녀와서 밥먹고 빨래를 했습니다. BBBB -> BB } } class B { method c() { AAAA -> AAA 점심은 이거 찍느라 못먹었는데 저녁엔 제육볶음을 먹고 싶네요. BBBB -> BB } } 모아 놓은 AAAA 와 BBBB class A { ..
예제로 배우는 스프링 프레임워크 입문 - 의존성 주입 (Dependency Injection)
의존성 주입 (Dependency Injection) 필요한 의존성을 어떻게 받아올 것인가.. @Autowired / @Inject를 어디에 붙일까? 생성자 필드 Setter 1. Constructor public OwnerController(OwnerRepository clinicService, /*VisitRepository visits*/) { this.owners = clinicService; //this.visits = visits; } @AutoWired -> 4.3부터 어떠한 클래스에 생성자가 하나뿐이고 생성자로 주입받는 Reference 변수들이 Bean으로 등록되어 있다면 그 Bean을 자동으로 주입해주도록 추가 되었음 즉 4.3이상부터 Autowired 생략 가능 2. field pri..
예제로 배우는 스프링 프레임워크 입문 - Spring Bean
빈 (Bean) 스프링 IoC 컨테이너가 관리하는 객체 // applicationContext의 개입 없이 만들어 졌으므로 아래 객체는 Bean이 아니다. OwnerController ownerController = new OwnerController(); OwnerController bean = applicationContext.getBean(OwnerController.class); // applicationContext가 관리하므로 위 객체는 Bean이다. 어떻게 등록하지? Component Scanning @Component @Repository @Service @Controller Configuration @Controller annotation에는 @Component annotation이라는 ..
예제로 배우는 스프링 프레임워크 입문 - IOC Container
IoC (Inversion of Control) 컨테이너 ApplicationContext (BeanFactory) 빈(bean)을 만들고 엮어주며 제공해준다. 빈 설정 이름 또는 ID 타입 스코프 아이러니하게도 컨테이너를 직접 쓸 일은 많지 않다. @Controller class OwnerController { private static final String VIEWS_OWNER_CREATE_OR_UPDATE_FORM = "owners/createOrUpdateOwnerForm"; private final OwnerRepository owners; private final VisitRepository visits; private final ApplicationContext applicationCont..
예제로 배우는 스프링 프레임워크 입문 - IOC
Inversion of Control 제어권이 뒤바꼈다고? 일반적인 (의존성에 대한) 제어권: “내가 사용할 의존성은 내가 만든다.” class OwnerController { private OwnerRepository repository = new OwnerRepository(); } IoC: “내가 사용할 의존성을 누군가 알아서 주겠지” 내가 사용할 의존성의 타입(또는 인터페이스)만 맞으면 어떤거든 상관없다. 그래야 내 코드 테스트 하기도 편하지. class OwnerController { private OwnerRepository repo; public OwnerController(OwnerRepository repo) { this.repo = repo; } // repo를 사용합니다. } clas..
예제로 배우는 스프링 프레임워크 입문 - 프로젝트 살펴보기 & 과제풀이
LastName이 아니라 FirstName으로 검색해 볼까? 뷰 변경 코드 조금 변경 OwnerController 클래스에서 LastName으로 되어있던 getter, setter등을 firstName으로 변경 OwnerRepository 클래스에서 LastName으로 찾던 Query 어노테이션 firstName으로 변경 정확히 일치하는게 아니라 해당 키워드가 들어있는 걸 찾아볼까? 쿼리만 변경 @Query("SELECT DISTINCT owner FROM Owner owner left join owner.pets WHERE owner.firstName LIKE %:firstName% ") Like 뒤에 :firstName%으로 되어 Prefix가 일치해야 검색가능한것을 surfix도 상관없이 일치하면 ..