BackEnd/Spring & Springboot Study
예제로 배우는 스프링 프레임워크 입문 - 스프링@AOP 실습
AOP 적용 예제 @LogExecutionTime 으로 메소드 처리 시간 로깅하기 @LogExecutionTime 애노테이션 (어디에 적용할지 표시 해두는 용도) @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface LogExecutionTime { } 실제 Aspect (@LogExecutionTime 애노테이션 달린곳에 적용) @Component @Aspect public class LogAspect { Logger logger = LoggerFactory.getLogger(LogAspect.class); @Around("@annotation(LogExecutionTime)") //@Around Annotat..
예제로 배우는 스프링 프레임워크 입문 - 프록시 패턴
프록시 패턴 기존 코드 건드리지 않고 새 기능 추가하기 프록시 패턴 https://refactoring.guru/design-patterns/proxy package org.springframework.samples.petclinic.proxy; public class Cash implements Payment{ @Override public void pay(int amount) { System.out.println(amount + " 현금 결제"); } } ------------------------------------------------------------ package org.springframework.samples.petclinic.proxy; import org.springframewor..
예제로 배우는 스프링 프레임워크 입문 - 스프링 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..