WIL(23-01-02~06)

allnight5·2023년 1월 8일
0

WIL

목록 보기
10/20

월요일날
@AOP를 이용하여 핵심기능과 공통기능을 구분하여 실행시키는 것으로
모든 비즈니스 로직에 들어가는 공통기능의 코드를 개발자의 코드 밖에서 필요한
시점에 적용하는 프로그래밍 방식입니다

@Around를 이용한 Aop개념의 예외처리 해보기 실패

그런데 이것을 @Around로 감싸서 해보려 했는데.. 그러면 메소드가 끝나고 반환해줄때의 값은 @Around로 감싼메소드의 반환값으로 보내줘야해서 이것으로 예외처리하는것은 올바르지 않고 ExceptionHandler를 이용하여 처리해야겠다는것은.. 화요일날알았지만
월요일동안 이 @Pointcut과 @Around, @AfterThrowing을 통한 예외처리 방식을 찾아보았다. @AfterThrowing은.. 메소드가 끝나고 나서라서 내가 원하는 참조형으로 반환할수있을것 같았으나. 지정했던 메소드로 반환해야하는것 같다.. 아직 이해가 부족하였다.

MethodArgumentNotValidException

@Vaild -> @Pattern에서 나오는
예외인 MethodArgumentNotValidException는 스프링에서 제공해주는 사용자정의 예외로 extends ResponseEntityExceptionHandler 과 같이쓰면 중복오류가 발생한다.

새롭게 브랜치를 파던가 바뀐내용을 저장하던가 새롭게 폴더를 만들던가 클론을하던가 할지언정 강제푸쉬를 하지 않기로하였다..

CustomException은 언제쓰는가

처음에는 전역처리할때 하나의 메소드로 다처리하려고 커스텀 예외처리를 하려고 했었다.. 보니까 설명에 일반 예외로도 메시지로 어디서 일어난 예외인지 확인이 가능하며 그러니 커스텀 예외도 메시지로 가능하지 않은가?라는 생각으로 말이다.
그런데 커스텀 예외는 메소드 이름을 보고서 이것이 어디서 발생하는 예외를 잡아서 처리해야하는지 알수있어야한다고한다... 그러면. 이름이 매우길고 내가 하나의 메소드로 처리하려는것보다 더 메소드가 많아지는것 아닌가? 그렇다면 차라리 일반적으로 제공하는 예외로 메시지를 작성하여해야겠다라는 생각으로 제공하는 예외로 예외처리를 마무리 하였는데.. 다음에는 이름을 길게쓰면서 커스텀 예외를 해보긴해야겠다.

시큐리티를 해보자

WebSecurityConfig나 자기가 시큐리티의 설정을 만들 클래스를 생성후
아래 두개의 어노테이션을 넣으면
@EnableWebSecurity
@EnableGlobalMethodSecurity
시큐리티 클래스의 토대가 완성이다.. 그 안에 채워줘야될 메소드가 있긴하지만 말이다.
그리고 Atuhentication에 값을 저장해둘 클래스들도 만들어줘야하며 token이나 세션, 원하는 방식에 따라서 설정값을 넣어주고 불러올수있도록 설정해줘야한다.

meta-annotaiton이란 무엇인가

다른 설명으로는 애노테이션의 정의에 부여된 애노테이션이라는 의미이다.
Meta-Annotaiton(@Target, @Retention,@Component(@Repository, @Service, @Controller))

@Configuration

Bean을 등록할때 싱글톤(singleton)이 되도록 보장해준다.
스프링컨테이너에서 Bean을 관리할수있게 됨.

@Import

@Import를 사용하면 설정 파일간의 계층을 만들 수 있습니다.
Non-@Configuration 클래스를 사용하는 경우 @ImportResource 를 사용하자.

파라미터 어노테이션으로 @RequestBody처럼 @AuthenticationPrincipal를
사용하면 getPrincipal() 로 리턴 받을 수 있는 객체를 바로 주입받을 수가

@GetMapping과 @PostMapping 어노테이션은 왜 등장했을까?

@RequestMapping("/api") 을 쓰면되지 @GetMapping과 @PostMapping 어노테이션을 만들었을까?

@PutMapping, @DeleteMapping, @PatchMapping과 함께 스프링 4.3부터 등장했다. 왜 @RequestMapping 대신 @PostMapping 등등을 쓸까 ?
1.코드가 줄어듬
2.url중복 사용가능
3.코드에 의미명시(GET 화면에 뿌릴떄, POST 전송 데이터 insert 할 때 등등
ex.@RequestMapping(value="경로", method=RequestMethod.GET) -> @GetMapping("경로")

profile
공부기록하기

0개의 댓글