DEV
-
[Spring] Bean Life Cycle / Scope / Profiles / ApplicationContextDEV/Spring 2024. 5. 17. 15:52
📌Bean의 Life CycleBean Life cycle 이란 객체가 언제 어떻게 생성되어 소멸되기 전까지 어떤 작업을 수행하고 언제, 어떻게 소멸되는지 일련의 과정을 이르는 말이다.Bean의 생명주기는 스프링 컨테이너에 의해 관리된다.Spring의 Bean은 Java 또는 XML bean 정의를 기반으로 IoC 컨테이너가 시작될 때 인스턴스화 되어야 한다.빈의 초기화와 소멸 전 실행되길 원하는 코드가 있다면 init(), destroy() 메서드에 사용자 정의가 가능하다.Spring Bean Life Cycle 프로세스스프링 컨테이너 시작스프링 빈 인스턴스 생성의존성 주입초기화 콜백 : 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출사용소멸전 콜백 :빈이 소멸되기 직전에 호출스프링 종료- Sp..
-
[Spring] AOP 심화 - JoinPoint와 ProceedingJoinPoint / 동작 원리 / 프록시 / JDK Proxy와 CGLib ProxyDEV/Spring 2024. 5. 17. 15:33
지난번 스프링 특징 중 AOP에 관하여 조금 더 조사해보았다. 📌JoinPoint와 ProceedingJoinPoint의 차이JoinPoint : Aspect가 적용될 수 있는 시점을 의미. JoinPoint 인터페이스는 호출되는 대상 객체, 메서드, 전달파라미터 목록에 접근할 수 있는 메서드를 제공메서드설명Signature getSignature()호출되는 메서드 정보 반환Object getTarget()대상 객체 반환Object[] getArgs()파라미터 목록 반환getThis()프록시 객체 반환Signature : 호출되는 메서드 정보메서드설명String getName()메서드 이름 반환String toLongName()메서드를 완전하게 표현한 문장 반환 (반환타입,파라미터타입)String ge..
-
[Spring] 스프링 프레임워크 특징/ POJO / IoC / DI / AOP / PSADEV/Spring 2024. 5. 8. 01:09
지난번 Java 스터디에서 POJO에 대해 알아보았는데, 스프링 프레임워크 특징에 대해 자세히 알아보고자 정리한다. 1. POJO (Plain Old Java Object) : 순수 자바 객체POJO는 스프링에서 사용되는 일반적인 자바 객체를 의미합니다. 스프링은 POJO를 이용하여 애플리케이션을 구성하고 관리합니다.데이터를 캡슐화하고 해당 데이터에 대한 접근 및 수정을 위한 getter 및 setter 메서드를 제공하는 간단한 Java 클래스를 지칭합니다.애플리케이션에서 데이터 객체를 표현하는 데 사용되며, Hibernate나 Spring과 같은 프레임워크와 함께 자주 사용됩니다.사용 예시public class Car { private String model; // 생성자 public ..
-
[JAVA] 자바 스터디 이모저모 OOP / POJO / JVM 메모리 구조 / GC / GC 알고리즘DEV/JAVA 2024. 5. 4. 18:09
스터디 주제java 에서 객체의 의미, OOP 란?POJO 가 무엇이고 왜 필요한가요?jvm 구조관점에서 메모리 영역에 객체와 메소드, 변수들이 어떻게 저장 되나요?상수와 static 의 필요성최신 자바 메모리 모델 소개gc 란?gc 는 어떻게 객체를 수집하나요? ( how do? )gc 대표 알고리즘 소개* OOP란?객체 지향 프로그래밍(Object-Oriented Programming, OOP)의 약자로, 현실세계를 프로그래밍으로 옮겨와 프로그래밍하는 것을 말한다. 현실 세계의 사물들을 객체라고 보고 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍하는 것이다. 이것을 추상화라한다. 주요 특징1. 캡슐화 (은닉화) : 객체의 속성과 행위를 하나로 묶는 것. 목적은 구현 코..
-
[JPA] 프록시와 연관관계 관리 (즉시로딩/지연로딩/영속성전이/고아객체)DEV/JPA 2024. 4. 29. 15:16
* 정보전달의 목적이 아닌 개인 스터디 정리 글 입니다. 강의 : 인프런 교육자 : 김영한프록시주제 : member를 조회할 때 team도 함께 조회해야할까 ? 1. em.find(Member.class, member.getId()) : DB에서 실제 엔티티 객체 조회2. em.getReference(Member.class, member.getId()) : DB조회를 미루는 프록시 객체 조회 (가짜)여기서 find로 가져온 객체와 getReference로 가져온 객체의 member class를 각각 sysout찍어보면1번은 member class2번은 member proxy 객체가 출력됨 EntityManagerFactory emf = Persistence.createEntityManagerFactory..
-
[JAVA] 직렬화(Serialization) / ObjectInputStream, ObjectOutputStream / Serializable, transientDEV/JAVA 2024. 4. 23. 20:39
객체를 데이터 스트림으로 만드는것. = 객체에 저장된 데이터를 스트림에 쓰기(write)위해 연속적인(serial) 데이터로 변환하는 것 자바 시스템 내부에서 사용되는 Object 또는 Data를 외부의 자바 시스템에서도 사용할 수 있도록 byte 형태로 변환하는 기술이다. 🌟 역직렬화 : 반대로 스트림으로부터 데이터를 읽어 객체를 만드는것 ObjectInputStream, ObjectOutputStream 스트림에 객체를 출력하는 직렬화는 ObjectOutputStream을 사용하고, 스트림으로부터 객체를 입력하는 역직렬화는 ObjectInputStream을 사용한다. 각각 InputStream과 OutputStream을 직접 상속받지만 기반 스트림을 필요로하는 보조스트림이다. //파일에 객체 저장(직..
-
[JAVA] 쓰레드(Thread)의 동기화 / synchronized / Lock과 Condition / fork & join 프레임워크DEV/JAVA 2024. 4. 23. 20:27
멀티쓰레드 프로세스의 경우 여러 쓰레드가 같은 프로세스 내의 자원을 공유해서 작업하기 때문에 서로의 작업에 영향을 주게된다. 한 쓰레드가 특정 작업을 끝마치기 전까지 다른 쓰레드에 의해 방해받지 않도록 하는것이 필요한데, 그래서 도입된 개념이 '임계 영역'과 '잠금(락,lock)'이다. - 공유데이터(객체)를 사용하는 코드 영역 : 임계 영역으로 지정 - 공유데이터(객체)가 가지고 있는 lock을 획득한 단 하나의 쓰레드만 임계영역 내 코드를 수행, 임계영역에서 벗어나서 lock을 반납해야 다른 쓰레드가 반납된 lock을 획득하여 임계영역 내 코드 수행 가능 → 즉, 쓰레드의 동기화란 한 쓰레드가 진행중인 작업을 다른 쓰레드가 간섭하지 못하도록 막는것 방법 synchronized 블럭 사용 Lock과 C..
-
[JAVA] 쓰레드 (Thread)의 구현 / 싱글쓰레드, 멀티쓰레드 / 우선순위 / 쓰레드 그룹 / 데몬 쓰레드DEV/JAVA 2024. 4. 5. 00:37
1) 프로세스(Process)와 쓰레드(Thread)의 차이 - 프로세스 : ‘실행중인 프로그램’ → 작업관리자에서 실행중인 프로그램의 프로세스 확인 가능 - 쓰레드 : 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것 따라서 모든 프로세스에는 최소한 하나 이상의 쓰레드가 존재. 둘 이상의 쓰레드를 가진 프로세스를 ‘멀티쓰레드 프로세스’라고 함 2) 쓰레드의 구현방법 : Thread클래스를 상속받는 방법과 Runnable인터페이스를 구현하는 방법이 있다. //1. Thread 클래스 상속 class MyThread extends Thread { public void run() { .. } //Thread 클래스의 run()을 Overriding } //2. Runnable 인터페이스 구현 class ..