Spring

[Spring] 스프링배우기전에 꼭 보기

개발 공주 2023. 6. 15. 16:13
728x90

어노테이션

 

스프링은 IOC 컨테이너 관리권을 가지고 있어 어노테이션을 사용하여 의존성을 주입을 한다

 

어노테이션(Annotation) 종류

@Component
@RestController
@Controller
@Configuration
@Service
@Bean

등등

 

  1. 의존성 주입(DI : Dependency Injection)
    • 생성자(Constructor)가 IoC 컨테이너에 접근하는 것, 생성자에 타입이 있을 경우 Ioc 컨테이너에서 타입을 찾아낸다.
  2. IoC(Inversion of Control)
    • 제어의 역전, 객체의 제어권이 스프링에게 넘어가는 것을 의미한다.
  3. 어노테이션(Annotation)
    • 컴파일시 JVM이 보는 주석으로 기본적으로 메타 데이터 역할을 한다.
  4. 메타 테이터(Meta-Data)
    • 데이터를 위한 데이터를 의미하며, 풀어 이야기하면 한 데이터에 대한 설명을 의미하는 데이터. (자신의 정보를 담고 있는 데이터)
  5. 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

인터페이스 특징

  1. 추상 메서드를 가진다
  2. 변수를 만들면 자동으로 앞에 public static final이 생략된다.
  3. 인터페이스를 메모리에 로드하려면 익명 클래스를 만든다.
  4. 추상메서드는 무조건 자식이 구현해야 한다.

인터페이스의 역할

함수를 넘길 때 사용(자바에서 메서드는 1급 객체가 아니다.)

  1. 클래스 넘기기 (행위가 정해져 있을 때)
  2. 인터페이스 넘기기  (행위가 정해져 있지 않을 때)

[참조] https://pink-love-princess.tistory.com/42

[참조] https://pink-love-princess.tistory.com/44

'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