본문 바로가기

Everyday Study64

2024.08.16(금) { 와일드카드 캡쳐, transient } 와일드카드 캡쳐와일드카드 캡처(Capture of Wildcards)는 제네릭 타입을 사용할 때 발생하는 문제를 해결하기 위한 기법입니다. 와일드카드는 ?를 사용하여 제네릭 타입의 유연성을 높이는 데 사용되지만, 때로는 와일드카드를 특정 타입으로 "캡처"하여 더 명확하게 사용할 필요가 있습니다. 특히 제네릭 메서드나 클래스에서 와일드카드를 사용하면서 타입 매개변수로 명확히 지정해야 하는 경우에 유용합니다.  ? 놔두면 아무거나 다 될 수 있어서 혼란이 올 수 있지만 T로 하면 예를 들어 String로 하면 다 String로 고정되기 때문에 와일드카드 캡처  와일드카드 캡처 문제예를 들어, 다음과 같은 코드가 있을 때:public void addToList(List list, Object value) { .. 2024. 8. 16.
2024.08.15(목) { ( @component,@Bean,@Autowired ), 커밋, Thread Context } @Component와 @Bean의 차이점등록 방식:@Component: Spring의 컴포넌트 스캔에 의해 자동으로 빈이 등록됩니다. 즉, @Component 어노테이션이 붙은 클래스는 Spring이 자동으로 인스턴스를 생성하고, 이를 컨테이너에 등록합니다.@Bean: 개발자가 직접 빈을 등록하기 위해 사용하는 어노테이션입니다. @Bean은 주로 @Configuration클래스 내의 메서드에 사용되며, 해당 메서드가 반환하는 객체를 Spring 컨테이너에 빈으로 등록합니다.사용 위치:@Component: 클래스 레벨에서 사용됩니다.@Bean: 메서드 레벨에서 사용됩니다.유연성:@Component: 기본적으로 설정 없이 자동으로 빈을 등록하는데 유리합니다. 특정 패키지 내의 클래스를 자동으로 스캔하고 빈으.. 2024. 8. 15.
2024.08.14(수) { 스레드 동기화, Lock 과 Lock의 종류 스레드 동기화(Thread Synchronization)스레드 동기화는 멀티스레드 환경에서 여러 스레드가 공유 자원(예: 변수, 객체, 파일 등)에 동시에 접근할 때 발생할 수 있는 문제를 방지하기 위해 사용됩니다. 동기화를 통해 한 번에 하나의 스레드만 공유 자원에 접근할 수 있도록 제어할 수 있습니다. 이렇게 하지 않으면 데이터 불일치, 데이터 손상 등의 문제가 발생할 수 있습니다.락(Lock)의 개념**락(Lock)**은 스레드 동기화의 핵심 개념 중 하나로, 공유 자원에 대한 접근을 제어하는 메커니즘입니다. 락을 사용하면 한 스레드가 자원을 사용하는 동안 다른 스레드가 그 자원에 접근하지 못하도록 막을 수 있습니다.락의 동작 원리락 획득(Take a Lock): 스레드가 공유 자원에 접근하기 전에.. 2024. 8. 15.
2024.08.13(화) { IoC 컨테이너 동작 과정, enum데이터베이스, CGLIB 서브클래싱 = 프록시, 추상클래스->익명클래스O, 람다X } public List getAll() { return this.jdbcTemplate.query("select * from users order by id", this.userMapper);}해당 쿼리문은 Users 테이블에서 모든 행(row)과 모든 열(column)을 선택(select)한 후, id 열을 기준으로 오름차순(ASC, 기본값)으로 정렬하는 SQL 쿼리       enum은 데이터베이스에 존재하지않음 그래서 따로 int 값으로 변환해서 데이터베이스에 넣어야함 enum 타입은 Java에서 제공하는 열거형 타입으로, 일반적으로 특정한 상수 집합을 표현할 때 사용됩니다. 하지만 데이터베이스에는 enum 타입이 존재하지 않으므로, enum 값을 데이터베이스에 저장하려면 일반적으로 int나 S.. 2024. 8. 13.
2024.08.12(월) { 템플릿 메서드 패턴, 콜백, RowMapper, Stream, Properties } 템플릿 메서드 패턴(Template Method Pattern) 템플릿 메서드 패턴(Template Method Pattern)은 객체 지향 설계 패턴 중 하나로, 상위 클래스에서 알고리즘의 구조를 정의하고, 하위 클래스에서 알고리즘의 특정 단계를 구현하는 패턴입니다. 이 패턴은 알고리즘의 뼈대를 상위 클래스에서 정의하고, 하위 클래스에서 세부적인 동작을 재정의하거나 확장할 수 있도록 설계되어 있습니다.템플릿 메서드 패턴의 구성 요소AbstractClass(추상 클래스):알고리즘의 구조를 정의하는 추상 클래스입니다.전체적인 알고리즘 흐름을 구현한 템플릿 메서드를 포함하고 있습니다.알고리즘의 일부 단계는 추상 메서드로 정의되며, 이 메서드들은 하위 클래스에서 구체적인 구현을 제공합니다.ConcreteCla.. 2024. 8. 12.
2024.08.09 (금) { 싱글턴패턴, 애노테이션에서의 속성, registerSingleton, AnnotationConfigApplicationContext, 어노테이션 } 싱글턴 패턴 적용 단계자기 자신을 참조하는 스태틱 필드를 선언하고 초기화:클래스 내부에서 자신의 인스턴스를 참조하는 정적(스태틱) 필드를 선언하고, 초기화합니다.생성자를 프라이빗으로 변경:생성자를 private으로 선언하여, 외부에서 new 키워드를 통해 인스턴스를 생성하지 못하도록 막습니다.외부에서 인스턴스에 접근할 수 있도록 스태틱 메서드 제공:인스턴스를 반환하는 정적 메서드를 정의합니다. 이 메서드를 통해 외부에서 유일한 인스턴스에 접근할 수 있습니다.public class Singleton { // 1. 자기 자신을 참조하는 스태틱 필드를 선언하고 초기화 private static final Singleton instance = new Singleton(); // 2. 생성자를 프.. 2024. 8. 11.