프로젝트/Todo 웹 애플리케이션 만들기(React.js, 스프링 부트,AWS 사

2

아리빠 2022. 6. 20. 17:26

-스프링: 오픈소스의 경량 프레임워크

오픈소스: 소스코드가 공개됨

경량 프레임워크: 프레임 워크 사용 시 메모리나 CPU 자원이 많이 들지 않거나 사용이 쉽고 간편한 경우

프레임워크: 개발자들이 확장해서 사용할 수 있는 코드

스프링 프레임워크엔 여러 컴포넌트가 존재하는데, 이번 프로젝트에선 스프링 부트를 사용한다.

-스프링 프레임워크의 핵심은 '의존성 주입'

-> 이 클래스가 의존하는 다른 클래스들을 외부에서 주입시킨다. 생성자를 이용해 주입하거나, Setter을 이용해 주입한다

의존성 주입을 전문적으로 해주는 것이 의존성 주입 컨테이너이고, 그 의존성 주입 컨테이너중 하나가 스프링 프레임워크

프로젝트 규모가 커지고, 관리해야하는 오브젝트가 많아질 수록 오브젝트를 생성하는데 할애하는 시간도 늘어난다.

이럴때 의존성 주입 컨테이너 도움을 받아 생성과 관리를 효율적으로 할 수 있다.

-스프링 부트

스프링 부트 사용시 stand-alone 프로덕션급의 스프링 기반 애플리케이션을 쉽게 구동할 수 있다.(*stand alone:애플리케이션 실핼시 다른애플리케이션 필요 x/ stand-alone 이 아닌 애플리케이션: 아피치 톰캣)

스프링부트 프로젝트 설정을 해주었다.

import 완료되어 Package Explorer 안에 src/main/java -> com.example.demo -> DemoApplication.java

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

스프링 부트 이용하면 어노테이션을 사용해 많은 설정 작업을 간단히 할 수 있다.

@SpringBootApplication 이라는 어노테이션은 해당 클래스가 스프링 부트 설정하는 클래스임을 의미한다.

또한 스프링은 @SpringBootApplication 어노테이션이 달린 클래스가 있는 패키지를 베이스 패키지로간주한다.

스프링은 베이스 패키지와 그 하위 패키지에서 자바 빈을 찾아 스프링의 의존성 주입 컨테이너 오브젝트, ApplicationContext에 등록한다.

그리고 애플리케이션 실행 중 어떤 오브젝트가 필요한 경우 의존하는 다른 오브젝트 찾아 연결해준다.

자동으로 다른 오브젝트 찾아 연결해 주는 것은 @Autowired라는 어노테이션이 담당한다.

스프링은 어떻게 애플리케이션 컨텍스트에 등록할 자바 빈을 찾을까?

-@Component가 담당한다

@Component는 스프링에게 이 클래스를 자바 빈으로 등록시키라고 알려주는 어노테이션.

그렇다면 @Component를 클래스에 달기만 한다면 무조건 스프링이 검색해서 등록해 주는가?

->No

@ComponentScan 어노테이션이 어떤 클래스에 있어야지만 컴포넌트를 캐스팅 할 수 있다.

스프링을 이용해 관리하고 싶은 빈의 클래스 상단에 @Component를 추가해 주면 자동으로 이 오브젝트를 스프링에 빈으로 등록 할 수 있다.

@Autowired와 함께 이용하면 스프링이 알아서 필요할 때 오브젝트를 생성해준다.

그렇다면 @Component를 추가하지 않고 스프링을 통해 빈을 관리하려면 어떻게 해야할까?

->