어노테이션
스프링은 IOC 컨테이너 관리권을 가지고 있어 어노테이션을 사용하여 의존성을 주입을 한다
어노테이션(Annotation) 종류
@Component
@RestController
@Controller
@Configuration
@Service
@Bean
등등
- 의존성 주입(DI : Dependency Injection)
- 생성자(Constructor)가 IoC 컨테이너에 접근하는 것, 생성자에 타입이 있을 경우 Ioc 컨테이너에서 타입을 찾아낸다.
- IoC(Inversion of Control)
- 제어의 역전, 객체의 제어권이 스프링에게 넘어가는 것을 의미한다.
- 어노테이션(Annotation)
- 컴파일시 JVM이 보는 주석으로 기본적으로 메타 데이터 역할을 한다.
- 메타 테이터(Meta-Data)
- 데이터를 위한 데이터를 의미하며, 풀어 이야기하면 한 데이터에 대한 설명을 의미하는 데이터. (자신의 정보를 담고 있는 데이터)
- JVM(Java Virtual Machine)
- 명령을 직접 하드웨어에 내리는 것이 어려워 OS가 대신하는데, JVM은 OS에 맞게 자바 명령을 내리는 역할을 한다.(‘~.java’ 파일을 ‘~.class’ 파일로 OS에 맞게 실행시킨다.)
컴포넌트 스캔
@Component를 가진 모든 대상을 가져와서 빈에 등록하기 위해 찾는 과정
( 빈 설정파일 + @Bean을 통해 빈을 하나하나 지정할 필요가 없음)
[ 특징 ]
- 빈 이름 기본 전략 : 가장 앞 문자를 소문자로 바꾼 것이 빈 이름이 된다
ex) MemberServiceImpl --> memberServiceImpl - 빈 이름을 수동으로 지정 : @Component("지정할 이름")
- 기본적인 컴포넌트 스캔 대상
- @Component : 컴포넌트 스캔에서 사용
- @Controller : 스프링 MVC 컨트롤러에서 사용
- @Service : 스프링 비즈니스 로직에서 사용
- @Repository : 스프링 데이터 접근 계층에서 사용
- @Configuration : 스프링 설정 정보에서 사용
- 컴포넌트 스캔 범위
- @ComponentScan 어노테이션이 있는 파일의 패키지 아래를 찾는다. (보통은 최상단에 이미 있는걸로 알고있음)
- basePackages / basePackageClasses로 지정도 가능
- 권장 방법 : 구성파일에 등록시 프로젝트 최상단에 두기
(SpringBoot 사용시라면 @SpringBootApplication에 포함되어있어서 자동으로 최상단으로 유지된다)
메모리 종류
8GB 메모리의 컴퓨터라면 80억개의 문자를 저장할 수 있다. 이 중에 반이 OS가 차지하는데 나머지 4GB를 자바에서 사용한다. 자바에서 사용하는 메모리에는 다음 세 종류가 있다.
Static 메모리
main 함수가 시작되기 전에 메모리에 떠서 main 함수가 종료될 때 메모리에서 사라진다. 주로 하나 밖에 없는 것, 무조건 떠 있는 것, 끝까지 띄우려는 것에 사용한다. 무조건 전역 변수이다. main이 실행되기 전에 뜨기 때문에 뜨는 타이밍 컨트롤할 수 없다는 단점이 있다.
Stack 메모리
함수 내부에 존재하는 메모리로 생명주기가 짧으며 이를 지역변수라고도 한다. 실행시에 뜬다.
Heap 메모리
method를 new할 때 사용하는 메모리
오버로딩과 오버라이딩
오버로딩(Overloading)
동일한 이름의 method를 타입과 유형만 달리하여 몇 번이고 사용하는 기술
오버라이딩(Overriding) : 무효화
부모 클래스와 자식 클래스의 이름이 같을 경우 부모 클래스를 무효화시키는 기술(재정의)
[참조] https://pink-love-princess.tistory.com/36
Getter & Setter
행위를 통해 상태에 접근하는데 이때 실수 방지를 위해 상태를 private 변수로 잡는다. 일반적인 방법으로 접근할 수 없는 private에 담긴 변수를 확인하기 위한 public 변수를 만들어주는데 이것이 바로 Getter와 Setter이다.
Interface
인터페이스 특징
- 추상 메서드를 가진다
- 변수를 만들면 자동으로 앞에 public static final이 생략된다.
- 인터페이스를 메모리에 로드하려면 익명 클래스를 만든다.
- 추상메서드는 무조건 자식이 구현해야 한다.
인터페이스의 역할
함수를 넘길 때 사용(자바에서 메서드는 1급 객체가 아니다.)
- 클래스 넘기기 (행위가 정해져 있을 때)
- 인터페이스 넘기기 (행위가 정해져 있지 않을 때)
'Spring' 카테고리의 다른 글
[Spring] 3 Layer Architecture (Spring) (0) | 2023.06.27 |
---|---|
[Spring] 객체 지향 설계의 5가지 원칙 (SOLID) (1) | 2023.06.18 |
[Spring] AOP (0) | 2023.06.15 |
[Spring] IoC, DI, DIP (0) | 2023.06.15 |
[Spring] Spring Framework란 (0) | 2023.06.15 |