본문 바로가기

반응형

JAVA

(8)
AOP (관점지향 프로그래밍) 비즈니스 로직을 건드리지 않고도 부가적인 기능(로깅, 보안, 트랜잭션 관리 등)을 쉽게 구현할 수 있는 방법 1. 특징  관심사의 분리: 비즈니스 로직과 부가적인 기능을 분리하여 코드의 가독성과 유지보수성을 높인다.적용 범위: Web Layer, Business Layer, Data Layer 어디서든 활용 가능.재활용성: 특정 시점(Pointcut)에서 원하는 동작(Advice)을 재활용할 수 있다.   2. 활용사례 로깅: 여러 로직에서 로그를 남기고 싶을 때, 각 메소드마다 추가하지 않고 AOP로 한 번에 처리 가능       ex ) 아래 사진처럼 a로직, b로직, c로직이 있을때 각각에 메소드 안추가하고 한번에 aop로 가능 !성능 측정: 메소드 실행 전후의 시간을 측정하여 성능 최적화에 도움...
Filter와 Interceptor Filter (필터)Filter는 서블릿 컨텍스트(톰캣 등) 영역에서 동작하며, 클라이언트 요청이 가장 먼저 지나가는 단계특징 및 역할:가장 원시적인 요청 데이터 처리:HTTP 요청 데이터를 가공하거나 수정할 수 있는 첫 번째 단계입니다.예: 요청의 헤더 추가, 특정 조건에 따라 요청 차단.JSON Body 재사용:요청의 바디 데이터를 미리 읽어두고, 이를 다른 컴포넌트에서도 재사용할 수 있게 처리.변환 역할:요청 데이터를 다른 형식으로 변환하거나, 보안 검사를 추가적으로 수행.종속성 없음:Spring의 Bean 관리 시스템에 영향을 받지 않고, 서블릿 스펙에 기반해 동작합니다.주요 활용 사례:요청 로깅CORS 처리데이터 인코딩 변환  Interceptor (인터셉터)Spring에서 관리되는 Bean으로..
JWT (JSON Web Token) JWT (JSON Web Token)JWT는 토큰 기반 인증 방식으로, 클라이언트와 서버 간의 인증 정보를 안전하게 전달하기 위한 표준입니다. 주로 무상태(stateless) 방식의 인증을 지원하며, 확장성과 보안성을 동시에 보장하는 특징이 있습니다.JWT 구조JWT는 세 부분으로 구성된 문자열입니다:헤더(Header): 어떤 알고리즘이 사용되었는지에 대한 정보(JWT 타입, 서명 알고리즘)를 포함.페이로드(Payload): 토큰에 담길 사용자 정보나 **클레임(Claims)**을 포함. 클레임은 유저 아이디, 권한 정보 등 인증과 관련된 데이터를 나타냅니다.서명(Signature): 헤더와 페이로드를 비밀 키로 서명하여, 데이터의 무결성과 신뢰성을 보장.이 세 가지가 결합되어 Base64로 인코딩된 문..
해시(Hash) 란? 해시(Hash) 자료구조는 저장 및 검색에서 매우 효율적으로 활용되며, 그 정확한 구현 방식에 따라 다양한 용도와 성능 차이를 보인다.해시 함수는 데이터에 대한 특정 값을 추출해 활용하는 알고리즘으로, 암호화, 블록체인, 메시지 인증 코드 등에서도 광범위하게 사용된다  해시(Hash)입력 데이터를 고정된 길이의 데이터로 변환하여 출력하는 값이 해시 값(Hash value) 혹은 해시 코드라고 불린다. 해시 함수를 통해 데이터의 키 값을 변환하여 얻은 정수 값은 배열의 인덱스로 사용되며, 이를 통해 데이터를 저장하거나 검색할 수 있다.   1. 자료구조의 특징키(key)와 데이터(value)를 매핑: 해시는 키를 데이터에 연결하는 구조이다.해시 함수를 통해 키의 데이터에 맞는 배열의 주소(인덱스)를 계산한..
DAO, DTO, VO,Entity 차이 DAO(Data Access Object)데이터베이스(DB)에 접근하여 데이터를 삽입, 삭제, 조회, 수정하는 기능을 제공하는 객체입니다. 데이터베이스 접근 로직과 비즈니스 로직을 분리하기 위해 사용DAO의 경우 DB와 연결할 Connection 까지 설정되어 있는 경우가 많다. 현재 많이 쓰이는 Mybatis 등을 사용할 경우 커넥션풀까지 제공, DAO를 별도로 만드는 경우는 드물다. DTO(Data Transfer Object)DTO는 계층간(Controller, View, Business Layer)데이터 교환을 위한 자바 빈즈(Java Beans)를 의미한다.주로 서비스 레이어에서 데이터를 주고받을 때 사용 특징:로직을 가지지 않는 순수한 데이터 객체로, 오직 데이터를 담기 위한 목적을 가진다.G..
맥북 톰켓 설치 톰켓 사이트 Apache Tomcat® - Apache Tomcat 10 Software DownloadsWelcome to the Apache Tomcat® 10.x software download page. This page provides download links for obtaining the latest version of Tomcat 10.1.x software, as well as links to the archives of older releases. Unsure which version you need? Specification versitomcat.apache.org 톰켓 사이트 들어가서 원하는 버전 선택 mac 사용자는 Core에 zip 이나 tar.gz 아무거나 설치  그럼 Dow..
외장방식과 내장방식 외장 방식 = "전통방식"- 톰켓 같은 WAS(웹 애플리케이션 서버) 설치했다. - WAS 에서 동작하도록 서블릿 스펙에 맞추어 코드 작성- WAR 형식으로 빌드해서 war 파일 만듬- 만들어진 war 파일을 WAS에 전달→ WAS 기반 위에서 개발하고 실행 해야함, IDE 같은 개발 환경에서도 WAS와 연동해서 실행하는 복잡한 추가 설정 필요  내장서버  =  "최근방식"- 스프링 부트가 내장 톰캣을 포함- 애플리케이션에 톰켓 같은 WAS 라이브러리가 내장 되어 있음- (JAVA를 빌드하면 JAR 파일이 된다.) JAR 실행하만 하면 WAS도 함께 실행= main() 메서드만 실행하면 된다.
스프링 부트란? (역사, 탄생) 스프링은 너무 많아서 무거운데 자꾸 새로운게 개발되니까 더 무거워지기 시작했다. 그래서 많은 개발자들이 스프링은 무겁고 불편하다고 생각하고 있었는데, 이 문제를 해결하기 위해 등장한 것이 바로 스프링 부트  1. 톰캣 구동하지 않아도 되는 내장서버로 손쉽게 배포 가능2. 수많은 라이브러리 자동 관리3. 복잡한 구성 쉽게 4. 서로 다른 환경에서 개발할 때는 외부에 설정 값을 조정하는게 필요한데 이걸 편리하게 해줌5. 수많은 지표를 관리해 준다. EJB  - > Spring스프링 처음 프로젝트 설정하는데 시간이 많이 걸림(스프링을 이해해야 제대로 설치 가능 ㅠㅠ)스프링 프레임워크는 개발자들에게 많은 선택지를 줘서 초보자들은 설정 배워야 하는게 많았다.-> 무거운 스프링 라이브러리가 많으니 스프링 빈도 많아..