목록💡 백엔드/Java (74)
코딩마을방범대
이전 포스터 - 파라미터에 부여하는 방법 AOP 포스터 사용 방법 1. 어노테이션 선언 자세한 설정법은 위 링크 참조 @Inherited // 메소드에서만 사용 가능 @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface AccessRole { RoleFinal role(); } 2. Aspect 클래스 생성 joinPoint.proceed() 명령문 실행 시 타겟메소드가 실행됨 (만약 response 값으로 dto를 보내고 싶은 경우 return으로 보내면됨) 타겟 설정은 ||(or) 또는 &&(and) 다중 설정 가능함 @Aspect @Component public class AccessAspect { priv..
기존 log 에서 yml문의 변수 ON, OFF 값에 따라 log level을 조정하기로 했다 logback이든 log4j든 사용하고 있는 프로젝트라는 가정 하에 우선 build.gradle에 의존성을 주입시켜준다 (if문 사용 가능하게 해주는 dependency) // https://mvnrepository.com/artifact/org.codehaus.janino/janino implementation 'org.codehaus.janino:janino:3.1.9' 설정 파일인 xml에서 아래와 같이 사용 ${변수명}로 property resource에서 꺼내오거나 property("변수명")을 통해 yml 설정 파일에 자동으로 접근할 수도 있다 아래와 같이 이중 if문도 가능하다
logback을 사용하여 SQL문이 실행되었을 때 자동으로 log 남기기 사용 방법 1. build.gradle logback과 log4jdbc 추가 // https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1 implementation group: 'org.bgee.log4jdbc-log4j2', name: 'log4jdbc-log4j2-jdbc4.1', version: '1.16' // https://mvnrepository.com/artifact/ch.qos.logback/logback-classic testImplementation group: 'ch.qos.logback', name: 'logback-..
개발, 운영 서버를 구분하기 위해 profile을 설정하며, 아래와 같이 4가지의 host가 있음 HOST PROFILE 개발 dev 테스트 stage 알파 alpha 상용 prod yml 설정 spring: profiles: active: - local group: local: - site-local - db-local dev: - site-dev - db-dev include: - db - my-service - site spring-profiles-active 활성화할 profile 설정 spring-profiles-group profile이 (?)일 경우 하위 항목들의 profile과 그룹을 정의 spring-profiles-include 설정을 통해 어플리케이션을 실행할 때 profile을 포함..
Form Data를 어느 method에 넣느냐에 따라 쿼리파라미터의 위치가 다르다get: urlpost: body컨트롤러에서 HttpRequestServlet을 이용하여 body를 출력하려 하면 null값이 출력됨요청 -> 필터 -> 디스패처 서블릿 -> 인터셉터 -> 컨트롤러로 값을 바인딩 하는 과정에서Interceptor에서 getInputStream() 을 호출하여 Http Body를 읽으면서 소비하였기 때문에Controller의 Http Body가 비어있는 것public void test(HttpServletRequest request) throws IOException { ServletInputStream inputStream = request.getInputStream(); ..
예외 처리 과정 프로그래밍에서 예외 처리는 아주 중요하면서도 아주 어렵다. 과하다할 만큼 상세하고 다양하게 예외를 잡아 처리해준다면, 클라이언트도 그렇고 서버도 그렇고 더 안정적인 프로그램이 될 수 있게 도와준다. 예외 처리 하는 방법 메서드 내에서 예외 상황을 예측해서 처리하는 try-catch문을 이용하는 방법 요구사항에 의한 예외 처리 (ex. validation > 특정 값이 0~255범위가 아니면 유효하지 않은 값으로 판단하고 예외 처리) 스프링 시큐리티에서 인터셉터로 잡아서 UnauthorizedException 같은 예외 처리 @ExceptionHandler @Controller, @RestController가 적용된 Bean내에서 발생하는 예외를 잡아서 하나의 메소드에서 처리해주는 기능 사..
Interceptor Client로부터 들어오는 요청( HttpRequest )을 Controller의 Handler로 도달하기 전에 가로채거나 Controller로 부터 보내는 응답( HttpResponse )을 가로채는 역할 HandlerInterceptor에서 가로채어 원하는 추가적인 로직을 수행한 후에 Controller의 Handler로 보낼 수 있도록 하는 Module ( Handler : Client가 요청한 url에 따라 실행되어야 할 Method ) 사용 방법 1. HandlerInterceptor 인터페이스를 구현하는 방법 preHandle HttpRequest를 컨트롤러의 Handler로 보내기 전에 실행하는 메소드 postHandle 요청에 대한 응답을 View에 렌더링 하기 전에 ..
이전 Log4j 자료 로깅(Logging)이란? Logback이란? 오픈소스 로깅 프레임워크이며 SLF4J의 구현체이자, 스프링부트에 기본으로 내장되어 있는 로깅 라이브러리 log4j보다 좋은 성능을 가짐(log4j: 2015년에 지원 중단) SLF4J 로깅 추상 레이어를 제공하는 인터페이스 slf4j 덕분에 애플리케이션은 어떤 로깅 라이브러리를 사용하던 같은 방법으로 로그를 남길 수 있는 것 (그래서 로그 라이브러리를 교체하는 일이 발생하더라도 애플리케이션의 코드가 변경될 필요가 없음) 사용 방법 1. build.gradle // https://mvnrepository.com/artifact/ch.qos.logback/logback-classic testImplementation group: 'ch.q..