본문 바로가기

Java , Spring60

[Spring] CS 스터디 - 3주차 Spring & Network 3주차(8/7) - Spring & NetworkAOP💡 AOP란? (Aspect Oriented Programing) 관점 지향 프로그래밍을 의미한다. (코드의 중복이 횡단으로 이루어지는 경우) 로깅, 보안, 트랜잭션 관리, 등과 같은 공통적인 관심사를 모듈화 하여 코드 중복을 줄일수 있다.Aspect(관점) - 공통 관심사항을 정의하는 모듈이다.Advice(조언) - Aspect의 동작을 정의, 스프링에서는 5가지 종류의 Advice를 지원한다.Pointcut (포인트컷) - 어떤 메서드가 어떤 Advice를 받을지 결정Join Point(조인 포인트) - Advice가 적용될 수 있는 위치Weaving(위빙) - 대상 코드에 Aspect를 적용하는것, 스프링에서는 컴파일, 클래스 로딩, 런타임 시.. 2024. 8. 11.
[Java] CS 스터디 - 2주차 (Java & Spring) Java의 GC💡 Garbage Collection이란? Java의 메모리 관리 방법으로 JVM의 Heap 영역에 동적으로 할당된 메모리중 필요 없어진 메모리 객체를 자동으로, 주기적으로 제거 해주는 프로세스 이다.GC의 장단점장점메모리 누수를 방지 할 수 있다.이미 해제한 메모리를 다시 해체하거나, 해제한 메모리에 다시 접근하는 등의 오류를 방지 할 수 있다.단점개발자 입장에서 메모리가 언제 해제 되는지 알 수 가 없다.오버헤드로 인한 성능 저하가 발생 할 수 있다.GC의 대상그렇다면 어떤 객체가 GC의 대상이 될까?객체는 현재 참조 되고 있는 Reachable 객체와 참조 되고 있지 않은 UnReachable 객체로 나누어 진다. GC는 이러한 UnReachable 객체들을 주기적으로 제거해준다.G.. 2024. 8. 11.
[Java] CS 스터디 - 1주차 (Java & Spring) 1주차(7/24) - Java & SpringJVM💡 JVM 이란? Java Virtual Machine 이다. (자바 가상 머신) Java 프로그램이 실행될 때 사용되는 가상 컴퓨터 이다.Java 프로그램 실행 과정자바 소스 코드(.java)를 작성한다.자바 컴파일러(javac)를 통해 자바 소스 코드(.java)를 자바 바이트 코드(.class)로 컴파일 한다.JVM의 Class Loader는 동적 로딩에 필요한 클래스들을 로딩 및 링크하여 Runtime Data Area에 올린다.Runtime Data Area에 로딩된 바이트 코드를 Execution Engine을 통해 해석된다.변환된 class 파일을 JVM에서 JLT와 인터프리터를 이용해서 네이티브 코드로 변홚하여 실행한다JVM 구성 요소Cl.. 2024. 8. 2.
[Spring] 선착순 쿠폰 동시성 문제 해결하기 (메세지큐 적용) 동시성 문제란?동일한 하나의 데이터에 두개이상의 프로세스나 스레드가 동시에 같은 데이터에 접근 할때 빌생할 수 있는 문제점을 의미한다. 동시성 문제 발생public void assignCoupon(CreateCouponReq createCouponReq) { // 쿠폰 발급 로직 try{ // 1. 존재하는 쿠폰 이벤트 인지 확인 if(!mapper.isValidEvent(createCouponReq.getCouponGroupId())){ log.error("[error] 쿠폰 발급 실패 - 존재하지 않는 이벤트입니다."); throw new RuntimeException("존재하지 않는.. 2024. 6. 26.
[Spring] JAR, WAR 스프링부트에서 프로젝트를 시작하면 JAR와 WAR를 선택할 수 있는데 그동안 JAR만 사용해왔어서 WAR에 대해 생각을 해본 적이 딱히 없었다.JAR는 Java 아카이브 파일이라고 알고 있는데 WAR는 무엇인지 스프링에서 JAR는 무엇이 다른지, 배포할 때 무슨 차이가 있는지 궁금해서 정리를 해보려 한다.   JAR (Java Archive) 란JAR는 Java Archive의 약자로 일반적으로 Java의 Class 파일, 관련 메타데이터 및 리소스를 포함한다.간단하게 Java 어플리케이션이 동작할 수 있도록 해당 프로젝트를 압축한 파일이다.JAR는 원하는 구조로 구성이 가능하고, JDK 내부에 있는 JRE만 있어도 실행이 가능하다.JDK,JRE란? ▼더보기JDK란  Java Development Kit.. 2024. 5. 23.
[Spring] RabbitMQ 연결해서 메세지 주고받기 프로젝트를 진행하면서 선착순으로 쿠폰을 발급하는 기능을 개발하는데,쿠폰을 발급하는 요청이 한번에 많이 들어모면 동시성 문제가 생길수있는데, 이를 메세지큐를 이용해 해결하기 위해 간단히 정리를 하고 간단한 실습을 해보았다. Message QueueQueue는 선입선출(First in First out) 구조를 가진 자료구조이다.메세지 큐(Message Queue)는 Queue를 이용해서 메세지를 전달하는 시스템이며, 메세지 지향 미들웨어(MOM) 을 구현한 시스템이다.메세지 브로커 VS 이벤트 브로커메세지 큐에서 데이터를 운반하는 방식에 따라 메세지 브로커 와 이벤트 브로커로 나누어진다.메세지 브로커(Message Broker)메세지 브로커는 Producer 가 생산한 메세지를 메세지 큐에 저장하고, 저장.. 2024. 5. 21.
Gradle, Maven, Gradle Wrapper Gradle이란?그루비(Grrovy)를 기반으로 한 빌드 자동화, 개발 지원에중점을 둔 빌드 도구빌드 자동화 도구?소프트웨어 개발 프로세스에서 빌드 작업을 자동화하기 위해 사용되는 도구입니다. 소스 코드를 컴파일하고 테스트를 실행하며, 라이브러리 및 의존성을 관리하며, 배포 가능한 소프트웨어 패키지를 생성하는 등의 작업을 자동화하는 데 사용된다.빌드(build)란?소스 코드를 실행 가능한 독립적은 소프트웨어 산출물로 만드는 과정 빌드 과정 : 컴파일 → 링크 → 패키징 → 테스트컴파일: 소스코드 -> 바이너리 코드로링크: 클래스 파일들끼리 연결 (외부 라이브러리 포함)패키징: 연결된 클래스 및 리소스 파일 묶어주기테스트: 기능 테스트빌드의 산출물JAR (Java Archive): 자바에서 사용되는 압축 .. 2024. 4. 11.
[Spring] 스프링 시큐리티 정리 스프링 시큐리티란?Spring Security는 Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크이다.Spring Security는 '인증'과 '인가'에 대한 부분을 Filter 에서 처리한다. (HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러) Spring Security는 Spring 생태계에서 보안에 필요한 기능들을 쉽게 사용하도로 도와준다. Spring Security  아키텍처 앞서 말했듯이 Spring Security는 필터를 이용한다.  간단한 동작과정은 아래와 같다. 1. 사용자의 요청이 서버로 들어온다.2. Authotication Filter가 요청을 가로채고 Authotication Manger로 요.. 2024. 2. 14.
[Spring] 스프링 시큐리티 - 커스텀 로그인, 로그아웃, UserDetailsService, UserDetails 실습 커스텀 로그인 적용하기프로젝트를 만들고 실행을 하면 다음과 같이 로그인 창이 뜬다.의존성은 위 7개를 추가해주었다. 스프링 시큐리티를 적용하면 자동으로 로그인창이 생긴다. user와 프로젝트 시작시 나오는 비밀번호를 통해 로그인을 할 수 있다. 커스텀 로그인창을 적용시켜보자@Configuration@EnableWebSecuritypublic class SecurityConfig { @Bean //비밀번호 암호화를 할때 사용 public BCryptPasswordEncoder bCryptPasswordEncoder(){ return new BCryptPasswordEncoder(); } @Bean public SecurityFilterChain filterChain.. 2024. 2. 13.