백엔드/Java Spring Boot 풀스택 클라우드 개발자 되기! 6

aop

advice 실행하려고 하는 코드 pointcut 해당 코드를 언제 실행할 것인가에 대한 표현식 이 ex) execution(* com.in28minutes.learnspringaop.aopexample.business.*.*(..)) Aspect advice + pointcut Weaver aop를 구현한 프레임워크 ex) AspectJ, Spring AOP Join Point pointcut이 참일 때 advice가 실행되고 advice의 실행 인스턴스 @After 메소드가 성공하든 exception을 던지든 실행함 @AfterReturning 메소드가 성공할 때만 실행함 @AfterThrowing 메소드가 exception을 던질때만 실행함 @Pointcut 사용할 때 위치를 찾아서 할 수있지만, ..

Spring Security

인증: 적절한 사용자인지 파악한다. 권한: 특정한 작업을 수행할 권한이 있는지 파악한다. 가고 싶은 곳으로 가도록 하거나, 혹은 정보를 얻도록 허용하는 과정이다. 예시) 비행기 탑승 ㅡ> 여권, 신분증 검사(인증) ㅡ> 항공권으로 탑승 권한 부여(권한) MVC패턴은 모든요청을 Dispatcher Servlet이 인터셉트후 적절한 Controller로 연결해준다. Spring Security는 모든요청을 Spring Security이 인터셉트 후 (인증과 권한을 확인) Dispatcher Servlet으로 전송되고 적절한 Controller로 연결해준다. Spring Security Filter Chain CORS(Cross-Origin Resource Sharing) 브라우저에서 다른 출처의 리소스를 공..

responseBody

package com.in28minutes.springboot.myfirstwebapp.hello; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class SayHelloController { @RequestMapping("say-hello") @ResponseBody // 메시지가 리턴한 것 그대로를 브라우저에 리턴하는 것 public String sayHello() { return "Hello! What ..

logging 간단 정리

Log란 시스템 동작 시 시스템 상태, 작동 정보를 시간의 경과에 따라 기록한 것을 말합니다. 그리고 Logging이란 정보를 제공하는 일련의 기록인 Log를 생성하도록 시스템을 작성하는 활동을 말합니다. trace 로그에 있는 모든 정보 출력 debug 훨씬 더 많은 정보 출력 info 로깅된 모든 정보 출력 warning 조금 더 많은 정보 출력 error 오류와 예외만 출력 off 전체 로깅 끄기 위로 올라갈수록 점점 로그의 양이 많아진다.(좀 더 자세한 정보를 제공한다.) (복붙) 로그레벨 설명 TRACE 모든 메시지를 표시하기 위한 정보 DEBUG 프로그램 디버깅하기 위한 정보 INFO 상태변경, 서비스 동작 상태를 위한 정보 WARN 향후 잠재적으로 문제를 야기할 수 있는 정보 ERROR 의도..

Annotations vs XML Configuration

Annotations vs XML Configuration Annotations XML Configuration 편함 쉽다 어렵다(직접하나씩 설정해줘야됨) 코드 길이 짧다. 번거롭다 pojo(오래된 방식의 간단한 자바 오브젝트) 사용안함 자바코드를 바꿀 필요가 없다. 관리 쉽다. 어렵다 ex) 클래스 이름은 바꾸면 xml에서도 바꿔줘야함 사용빈도 자주사용 거의 사용안함 디버깅 난이도 어렵다 명시적으로 표현되어 있기때문에 디버깅이 조금 쉽다. 둘 다 사용해도 괜찮다. 하지만 사용을 한다면 어노테이션을 사용하던지, XML만 사용하던지 단 1개만 사용해야한다. 즉 둘을 섞어서 쓰면 안된다.

프로토타입 vs 싱글톤타입

package com.in28minutes.learnspringframework.examples.e1; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.*; import org.springframework.stereotype.Component; import java.util.Arrays; @Component class NormalClass { } @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) //프로토타입 클래스 @Component class PrototypeClass { } @Config..