Java(35)
-
Filter, Interceptor, AOP의 차이
Filter Filter는 DispatcherServlet 이전에 실행이 되어 Filter가 동작하도록 지정된 자원의 앞단에서 요청내용을 변경하거나, 여러가지 체크를 수행할 수 있습니다. 또한 자원의 처리가 끝난 후 응답 내용에 대해서도 변경하는 처리를 할 수 있습니다. Filter는 웹 설정에 기본적으로 등록되는데 대표적으로 인코딩변환, 로그인 여부확인, 권한 체크 등의 요청에 대한 처리로 사용됩니다.Web.xml에서 필터의 예시 encoding org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encoding /*spring에서의 filter(2025 내용 추가)근래..
2020.04.22 -
AOP
AOP란 프로그래밍을 하다 보면, 공통적인 기능이 많아집니다. 이러한 공통기능을 모듈에 적용하기 위한 방법으로 상속을 이용할 수 있습니다. 하지만 JAVA에서는 다중 상속이 불가능합니다. 그리고 이러한 모듈을 계속 상속받아 공통 기능을 부여하기에는 한계가 있을 뿐더러 보기에도 불편하고 효율성도 떨어집니다. 이를 해결하기 위해 나타난 AOP는 핵심 기능과 공통 기능을 분리해, 공통 기능을 필요로 하는 핵심 기능들에 적용하는 방식입니다. 아래 그림과 같이, 붉은 상자에 있는 공통 부분들을 분리해내는 것입니다.AOP 용어Aspect: 공통 기능의 모듈Advice: Aspect를 구현한 객체JoinPoint: Advice를 적용해야 하는 부분(ex: 필드, 메소드 - spring에서는 메소드만 해당)Pointc..
2020.04.18 -
@Transactional
트랜잭션의 성질원자성: 한 트랜잭션 내에서 실행한 작업들은 하나로 간주합니다.일관성: 트랜잭션은 일관성 있는 데이터베이스 상태를 유지합니다.격리성: 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리합니다.지속성: 트랜잭션을 성공적으로 마치면 결과가 항상 저장되어야 합니다.스프링에서 트랜잭션 처리 방법 스프링은 트랜잭션 처리를 지원합니다. 일반적으로 @Transactional을 선언하여 사용하는 선언적 트랜잭션을 사용합니다. 클래스, 메소드 위에 @Transactional이 추가되면, 이 클래스에 트랜잭션 기능이 적용됩니다. 이 객체는 @Transactional이 포함된 메소드가 호출 될 경우, 구현된 PlatformTransactionManager를 사용하여 트랜잭션을 시작하고, 정상 여부에 ..
2020.04.17 -
.map()과 .flatMap()의 차이
1. .map() .map()은 단일 스트림의 원소를 매핑시킨 후 매핑시킨 값을 다시 스트림으로 변환하는 중간 연산을 담당합니다. 객체에서 원하는 원소를 추출해는 역할을 한다고 말할 수 있습니다. 아래의 예시를 살펴보겠습니다. Person.java class Person { int age; String name; ... } MapTest.java List sample = Arrays.asList( new Person(20, "park"); new Person(35, "kyung"); new Person(67, "seok"); new Person(10, "test man"); new Person(45, "test woman"); ); //List -> Stream -> map -> Stream Stream..
2020.04.10 -
LogBack
1. LogBack이란 LogBack이란 Log4J를 만든 개발자 Ceki Gülcü가 Log4J를 기반으로 더 빠른 속도와 더 적은 메모리 점유율 등의 성능을 개발하여 만든 Logging Framework입니다. 2. LogBack의 특징 Level 로그에 레벨을 설정할 수 있습니다. 개발 시 디버깅을 위해 출력하도록 한 로그들은 개발 완료 후 운영 시점에서는 더 이상 출력하지 않게 합니다. 로그마다 레벨을 설정해두고 설정 파일에서 출력 로그 레벨을 설정하여 원하는 단계의 로그만 출력할 수 있습니다. Appender 출력 방법을 선택할 수 있습니다. 로그의 기록을 담당하는 Appender에게 출력 위치(콘솔, 파일 등)나 출력 내용(날짜/시간, 레벨 등)에 대한 패턴을 설정할 수 있습니다. Logger..
2020.04.06 -
SLF4J
1. SLF4J란 SLF4J(Simple Logging Façade For Java)란 Logging Framework들을 추상화해 놓은 것입니다. Facade Pattern을 이용한 Logging Framework입니다. SLF4J는 추상 Logging Framework이기 때문에 단독으로는 로깅을 할 수 없습니다. 보통은 Log4J나 Logback 프레임워크를 함께 사용합니다. SLF4J의 특징 JVM에 의해 유효성 체크가 되며, 바인딩 Logging Framework가 없다면 아무런 동작을 할 수 없습니다. Log4J나 Logback과 같은 Logging Framework를 지원합니다. 기존 Legacy Logging Api를 지원하며, SLF4J로 Migration도 지원합니다. 인자형 로그 메시..
2020.04.03