- Spring Bean
기존의 java에서의 bean은 몇가지 특징을 가지고 있는 class라고 할 수 있었다.
하지만 spring에서의 bean은 약간 의미를 다르게 가진다.
Bean : 스프링 컨테이너가 관리하는 객체.
객체가 생성되는곳은 빈(bean) 컨테이너(container)이다.
- DI
DI는 Dependency Injection로, 말 그래도 '의존성 주입' 이다.
A객체에서 B의 객체를 생성할때 new 생성자를 사용하는 방법은 '결합도가 너무 높다' 는 단점이 있다.
(위와 같이 A객체에서 B의 객체를 생성하는 경우, A는 B에 의존한다. 라는 표현을 쓴다.)
유연하지 못해, 만약 수정사항이 있으면 많은것을 바꾸어야한다.
DI는 외부의 컨테이너로부터 B객체를 생성하고 A객체는 setter메소드를 통해서 B객체를 가져오는것을 뜻한다.
이렇게 되면, 결합도가 낮아지며 코드가 유연해진다는 장점이 있다!!
- @Autowired
@Autowired는 DI에서 사용되는 애노테이션이다.
내가 사용한 코드에서는 위와 같이 사용된다.
@Autowired는 생성자, setter, 필드에서 사용할 수 있는데 위 경우는 필드에서 사용하는 경우이다.
- IOC
IOC는 Inversion Of Constrol로, '제어의 역전'이다.
객체 생성과 관리, 주입을 개발자가 하는게 아니라, 컨트롤러에 의해 진행이 되며
프로그램의 흐름이 외부에 의해 통제되는것을 뜻한다.
이렇게 되면 유연한 코드를 작성할 수 있다.
기존에는
- 객체를 생성
- 의존성 객체 생성 (클래스 내부에서 생성) (new로 생성)
- 의존성 객체의 메소드를 호출
위 방법으로 이루어졌지만
스프링에서는 IOC로 인해
- 객체 생성
- 의존성 객체 주입
- 의존성 객체의 메소드를 호출
로 진행하게 된다.
- AOP
AOP란 Aspect Oriented Programming 를 의미한다.
이는 어떤 관점을 기준 삼아, 그 관점에 따른 핵심적인 기능 / 부가적인 기능을 나누어 모듈화하여 관리하겠다는것을 뜻한다.
이때 부가기능은 aspect로 분리한다.
우선 간략하게만 정리했다!
'study > backend' 카테고리의 다른 글
[TIL] 10 H2 db 설치하기 (0) | 2023.06.22 |
---|---|
[TIL] 08 @ManyToOne, @OneToMany.. (0) | 2023.06.20 |
[TIL] 07 @RequestMapping, @Builder (0) | 2023.06.19 |
[TIL]04 IOC Container, PSA, Proxy (0) | 2023.06.06 |
[backend] ORM / JPA/ Spring Data JPA (0) | 2023.01.19 |