Java Spring - 공부 여정
2024. 3. 16. 00:16ㆍSpring Boot
728x90
반응형
#1. 스프링 / 스프링 부트란
- 스프링
- 자바 기반 웹 앱 프레임워크
- 스프링 구조
- spring은 자바 객체와 라이브러리들을 관리해주며, 톰켓과 같은 WAS 가 내장되어 있어 자바 웹 앱을 구동할 수 있음
- 경량 컨테이너 (bean) 로 자바 객체를 spring 안에서 관리. 객체의 생성 및 소멸과 같은 생명 주기를 관리하며, spring 컨테이너에서 필요한 객체를 가져와 사용.
- spring의 특징 IOC / DI
- IOC - 제어의 역전
- DI - 의존성 주입
- 어떤 객체를 사용하는 주체가 객체를 직접 생성하는 게 아니라 객체를 spring에서 생성해서 사용하려는 주체 객체에 주입시켜주는 방식.
- 직접 생성하는 것보다 외부에서 생성 관리하는 이 방식이 주체 객체와 대상 객체의 의존성이 더 적음
- 스프링 부트
- 스프링을 더 쉽게 이용하는 도구.
- 스프링의 복잡한 세팅 요소를 스프링 부트가 대신하여 간단하게 프로젝트를 설정할 수 있게 한다. 스프링 개발을 조금 더 쉽게 만들어주는 역할
#2. Spring의 특징
1. bean 객체
- spring ioc 컨테이너가 관리하는 자바 객체를 빈이라고 부름.
💡 IoC (제어의 역전, Inversion Of Control)
-일반적으로 자바에선 각 객체들이 프로그램의 흐름을 결정하고, 각 객체를 직접 생성하여 메소드를 호출한다. 즉 사용자 제어 구조.
-IoC 적용된 경우, 객체 생성은 특별 관리 위임 주체에게 맡겨 사용자가 객체를 직접 생성하지 않음. 객체의 생명주기를 컨트롤하는 주체가 다른 주체가 됨. 즉 사용자의 제어권을 다른 주체에게 넘기는 것을 IOC라고 한다.
-스프링에게 제어를 위임하여 스프링이 만든 객체를 주입 → 의존성 객체의 메서드 호출
- 즉 spring 에서는 new를 이용해 생성한 객체가 아닌, spring에 의해 관리당하는 bean을 이용한다. 이때 bean을 얻기 위해서는 getBean()과 같은 메소드를 이용함.
2. Annotation
- 주석의 기능 이외의 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다.
- 상속 명시 등을 할 수 있음
- @override
@Component Annotation
개발자가 생성한 class를 bean으로 등록할 때 사용하는 annotation.
- controller 일 경우 controller annotation 사용하면 됨
- @Controller
- bean 을 등록하기 위해서는 해당 annotation을 사용해야 함.
- @Bean
- 해당 annotation이 등록되어 있는 경우, spring이 annotation을 확인하고 자체적으로 bean으로 등록함.
// -- 일부 생략 --
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
/**
* The value may indicate a suggestion for a logical component name,
* to be turned into a Spring bean in case of an autodetected component.
* @return the suggested component name, if any (or empty String otherwise)
*/
@AliasFor(annotation = Component.class)
String value() default "";
}
- bean configuration file 에 직접 bean 등록하는 방법
- @configuration 과 @bean 을 이용하여 bean을 등록할 수 있다.
@ComponentScan
- @Component @Service @Repository @Controller @Configuration 중 1개라도 등록된 클래스를 찾으면, context에 bean으로 등록함.
- 해당 어노테이션이 있는 클래스의 하위 bean을 등록될 클래스들을 스캔하여 bean으로 등록해준다.
728x90
반응형
'Spring Boot' 카테고리의 다른 글
99클럽 8일차 TIL: SpringBoot - Profile (0) | 2024.04.11 |
---|---|
99클럽 2일차 TIL: Spring Boot 에러 핸들링 (2) | 2024.04.05 |
스웨거(Swagger) - @ExampleObject value 속 긴 String 분리 과정 정리 (1) | 2024.03.15 |
스웨거(Swagger) - 어노테이션 간단 정리 (0) | 2024.03.14 |
DTO 상속에 대하여 (0) | 2024.03.14 |