일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- MySQL
- spring webflux
- Proxy
- MSA
- IT
- JPA
- 컴퓨터구조
- 알고리즘
- Algorithm
- 파이썬
- Galera Cluster
- redis
- JavaScript
- Spring
- 네트워크
- OS
- c언어
- Java
- 디자인 패턴
- C
- Heap
- 자바
- Data Structure
- 백준
- mongoDB
- 운영체제
- Kafka
- design pattern
- 자료구조
- react
- Today
- Total
목록Java (49)
시냅스
빈 스코프 Spring Bean Scope 빈이 존재할 수 있는 범위 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 웹 관련 스코프 request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프 session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프 application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 싱글톤 요청 싱글톤 스코프의 빈을 스프링 컨테이너에 요청한다. 스프링 컨테이너는 본인이 관리하는 스프링 빈을 반환한다. 이후에 스프링 컨테이너에 같은 요청이 와도 같은 객체 인스턴스의 스프링 ..
ComponentScan 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. ComponentScan은 Component가 붙은 모든 클래스를 스프링 빈으로 등록한다. 이때 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자를 사용한다. Autowired 생성자에 @Autowired를 지정하면 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아서 주입한다. 이때 기본 조회 전략은 타입이 같은 빈을 찾아서 주입한다. getbean(MemberRepository.class)와 동일하다고 이해하면 된다. 컴포넌트 스캔 기본 대상 @Componenet : 컴포넌트 스캔에서 사용 @Controller : 스프링 MVC 컨트롤러에서 사용 @Service : 스..
싱글톤 패턴 singleton pattern 이란 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다. private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 한다. public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); //2. public으로 열어서 객체 인스터스가 필요하면 이 static 메서드를 통해서만 조회하도록 허용한다. public static SingletonService getInstance() ..
스프링 빈 Spring Bean 이란? 스프링 컨테이너에 의해 관리되는 자바 객체(POJO, plain old java object) @Bean 개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 등록하고 싶은 경우 에 사용된다. 메소드 또는 어노테이션 단위에 붙일 수 있다. @Component 개발자가 직접 컨트롤이 가능한 클래스들의 경우에 사용된다. 클래스 또는 인터페이스에 붙일 수 있다. 스프링 컨테이너 Spring Container 란? 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공하는 역할을 한다. IoC와 DI의 원리가 이 스프링 컨테이너에 적용된다. 스프링 컨테이너는 xml 기반으로 만들 수 있고, 에노테이션 기반의 자바 설정 클래스..
제어의 역전 IoC (Inversion of Control) 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 프로그램의 흐름은 컨테이너가 관리한다. 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)라 한다. @Configuration public class AppConfig { @Bean public MemoryMemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public DiscountPolicy discountPolicy() { return new RateDiscountPolicy(); } @Bean public MemberService memberSer..
클래스 (Class) 객체의 청사진(Blueprint) 상태(클래스, 인스턴스 변수)와 행위(메서드)를 갖는 자바의 기본 단위 상속 (Inheritance) 상위 클래스의 변수와 메소드에 대한 사용권을 갖는 것 subclassing : 다른 클래스의 코드를 재사용할 목적으로 상속을 사용하는 경우 is - a 관계 어휘적 정의가 아닌 기대되는 행동에 따라 타입계층의 의미가 달라질 수 있음. 슈퍼타입과 서브타입 관계에서는 행동 호환성이 중요 subtyping : 타입 계층을 구성하기 위해 상속을 사용하는 경우 행동 호환성 두 타입 사이에 행동이 호환될 경우에만 타입계층으로 묶어야 한다. 동일한 메서드를 구현하면 행동을 호환하는것인가? 슈퍼클래스 (Super Class) 상속되는 클래스, 부모 클래스 서브클래..
와일드카드(Wildcard) 와일드 카드는 모든 타입을 대신할 수 있는 타입이다. 와일드 카드는 정해지지 않은 unknown type 이기 때문에 모든 타입에 대한 호출이 가능하다. 상한 경계 와일드 카드
equals, hashcode Object 의 메소드인 equals와 hashcode에 대해 알아보자. euqals 함수는 객체의 값이 같은지에 대한 여부를 boolean 값으로 반환하는 함수이다. hashcode 함수는 객체의 주소값을 해시코드로 반환하는 함수이다. equals 함수는 객체에 대한 주소 값으로 같은지 여부를 판단하고, hashcode 함수는 객체의 주소값을 해시테이블로 갖고 있기 때문에 객체의 값이 아닌 다른 기준으로 분류하고 싶다면 클래스 내부에서 오버라이딩 해줘야 한다. 구현 예시 class Car { private String model; private String color; public Car(String model, String color) { this.model = mode..
자바 가상 머신, JVM이란 운영체제에 독립적으로 실행하게 하는 버츄얼 머신 자바는 컴파일 과정에서 OS와 소통하는 기계어로 컴파일 되지 않고 JVM이 이해할 수 있는 Java bytecode(.class) 로 변환된다. JVM이 이 bytecode를 OS가 이해할 수 있게 해석한다. 자바 바이트 코드, Java Bytecode 바이트 코드란 가상 컴퓨터(VM)에서 돌아가는 실행 프로그램을 위한 이진 표현법을 의미한다. 자바 바이트 코드(Java bytecode)는 JVM이 이해할 수 있는 언어로 변환된 자바 소스코드를 의미한다. 변경된 자바 바이트 코드(.class) 파일들을 클래스 로더를 통해 JVM 메모리 영역으로 로딩한다. 이 바이트 코드는 다시 인터프리터 또는 JIT 컴파일러에 의해 바이너리 코..