Spring Container & Bean & Singleton
📘 Backend/Spring2023. 4. 2. 09:40Spring Container & Bean & Singleton

📘 Spring Container Bean의 lifecycle 관리(Bean 생성,관리,제거 등) Spring Framework의 핵심 개념이 필요한 이유를 이해할 수 있다. Spring Framework에서 DI(의존성 주입)이 어떠한 방식으로 구현되는지 설명할 수 있다. 객체 지향 설계에서, AOP가 필요한 이유를 설명할 수 있다. Spring Framework에서 AOP가 어떤 방식으로 구현되는지 설명할 수 있다. ApplicationContext = Spring Container (interface), 다형성 적용 XML, 애너테이션 기반의 자바 설정 클래스로 만들 수 있음 컨테이너는 개발자가 정의한 Bean을 객체로 만들어 관리하고 개발자가 필요로 할 때 제공 스프링 컨테이너를 통해 원하는 만큼..

Spring Framework 란?
📘 Backend/Spring2023. 4. 2. 09:33Spring Framework 란?

📘 Spring Framework 장점 효율적인 코드 작성 (무베이스 코드작성 < 기본베이스 코드작성) 정해진 규약에 따른 유지보수성↑ POJO(Plan Old Java Object) 기반의 구성 DI(Dependency Injection) 지원 AOP(Aspect Oriented Programming, 관점지향 프로그래밍) 지원 Java 언어를 사용함으로써 얻는 장점 단점 학습해야 할 것이 많음 유연한 개발이 어렵다 Spring Boot 사용 이유 XML 기반의 복잡한 설계 방식 지양 의존 라이브러리의 자동 관리 애플리케이션 설정의 자동 구성 프로덕션급 애플리케이션의 손쉬운 빌드 내장된 WAS를 통한 손쉬운 배포 📘 POJO (Plain Old Java Object) 란? 자바로 생성되는 순수한 객체 ..

Java Thread
📘 Backend/Java2023. 4. 2. 09:06Java Thread

📘 Thread 데이터와 어플리케이션이 확보한 자원을 활용하여 소스코드 실행 즉, 하나의 코드 실행 흐름 Thread 프로세스에서 실행 제어만 분리한 것 프로세스로부터 자원을 할당받고 그 자원을 이용하는 실행의 단위 프로세스의 Stack만 할당받고 코드 & 데이터 & 힙영역은 공유하기 떄문에 좀 더 효율적인 통신 가능 캐시 메모리를 비우지 않아도 되서 더 빠름 자원 공유로 인한 문제가 발생할 수 있으니 이를 염두에 둔 프로그래밍을 해야함 한 프로세스에 여러개의 스레드가 생성될 수 있음 즉, 캐시 메모리나 PCB에 저장해야하는 내용이 적고 비워야 하는 내용도 적기 때문에 상대적으로 더 빠른 컨텍스트 스위칭 📘 구현과 실행 Thread 클래스를 상속하는 방법 (다른 클래스 상속 불가, 권장 X) Thread..

Java GC & Equality & Override/Overload
📘 Backend/Java2023. 4. 2. 09:06Java GC & Equality & Override/Overload

📘 Garbage Collector 힙 영역에서 사용하지 않는 객체들을 제거하는 작업 이 작업이 필요한 이유는 개발자가 메모리를 직접 해제할 수 없는 언어이기 떄문 동작 방식 간단한 Serial GC 방식으로 설명함 좀 더 진보된 GC는 G1 GC, ZGC가 있으며 이 문서에선 다루지 않음 Garbage Collection Minor GC, Major GC로 구분된다 Minor GC는 young 영역, Major GC는 old 영역에서 일어난다고 정의함 GC를 수행할 때는 GC를 수행하는 스레드 이외의 스레드는 모두 정지함 이를 Stop-the-world 라고 한다 Minor GC는 Eden 영역이 가득 참으로부터 시작된다 Eden 영역에서 참조가 남아있는 객체를 Mark하고 Survivor 영역으로 복..

Java Object Mapper & Type Casting
📘 Backend/Java2023. 4. 2. 09:03Java Object Mapper & Type Casting

📘 ObjectMapper Jackson 라이브러리의 클래스 JSON - > Java 객체로 Deserialization Java 객체 -> JSON으로 Serialization ObjectMapper는 생성 비용이 비싸기 때문에 Bean & Static으로 처리하는걸 권장 Serialization // Object Mapper를 이용한 직렬화 try { Question question = Question.builder() .questionId(1L) .title("제목") .content("내용") .build(); objectMapper.writeValue(new File("src/question.json"), question); } catch (IOException e) { e.printStackT..

Java Stream
📘 Backend/Java2023. 4. 2. 08:34Java Stream

📘 Stream 많은 수의 데이터를 다룰 때 컬렉션이나 배열에 데이터를 담고 원하는 결고를 얻기 위해 for문이나 iterator를 사용해서 코드를 작성해왔다. 그러나 이런 방식으로 작성된 코드는 너무 길고 가독성과 재사용성이 떨어진다. 또 다른 문제는 데이터 소스마다 다른 방식으로 다뤄야 한다는 단점이 있다. 예를 들면 List를 정렬할 때는 Collections.sort()를 사용하고, 배열을 정렬할 때는 Arrays.sort()를 사용해야 한다. 이러한 문제를 해결하기 위해 만든것이 Stream이다. 스트림은 데이터 소스를 추상화하고 데이터를 다루는데 자주 사용되는 메서드들을 정의 해놓았다. 스트림의 특징 데이터 소스(원본)을 변경하지 않는다. Iterator처럼 일회용이다. 작업을 내부 반복으로 ..

Java Lambda Expression
📘 Backend/Java2023. 4. 1. 12:12Java Lambda Expression

📘 Lambda 함수형 프로그래밍을 지원하는 문법요소 메소드를 하나의 식(expression)으로 표현한 것으로 코드의 간결성,명확성을 목표로 함 익명의 객체이기 때문에 java의 문법요소를 해치지 않으면서 함수형 인터페이스를 사용가능함 기본적으로 반환타입과 이름을 생략 가능하며, 익명 함수(anonymous function) 라고 불림 Lambda의 기본형식 //기존 메서드 표현 방식 void sayhello() { System.out.println("HELLO!") } //위의 코드를 람다식으로 표현한 식 () -> System.out.println("HELLO!") 메소드를 Lambda식으로 만드는 예시 int sum(int num1, int num2) { return num1 + num2; } ↓..

image