This is personal study note Copyright and original reference are from: https://www.youtube.com/watch?v=MCgvlTdZGBw&list=PL9mhQYIlKEhdjUeH15EBJvhdEgjMZa798&index=2 ================================================================================ ================================================================================ ================================================================================ ================================================================================ 그래들 플러그인 설치 - Help - Eclipse Marketplace - Search: gradle - Install: Buildship Gradle Integration 2.0 ================================================================================ - New -> Spring Starter Project ================================================================================ ================================================================================ - 의존성 추가 ================================================================================ 인터넷이 안되면 스프링부터 프로젝트 만들기 불가능 인터넷이 제한된 곳: - 내부에 메이븐 저장소를 만들고, 인트라넷으로 사용 - 메이븐 저장소만 외부접속 허용 ================================================================================ - 자바어플리케이션 안에서, SpringApplication.run() 실행 클래스를 통해서, - 스프링 IoC 컨테이너를 띄우고, SpringBootApplication 어노테이션이 있는 위치를 기준으로 해서 - 하향식으로 스프링 bean 들을 탐색 ================================================================================ - 그래들 wrapper 에 의해서 그래들빌드 가 실행됨 ================================================================================ ================================================================================ ================================================================================ ================================================================================ META-INF - 자바 어플리케이션을 압축할 때, MANIFEST.MF 가 버전 정보를 가지고 있다 ================================================================================ libs: 선언된 의존성 라이브러리 ================================================================================ ================================================================================ ================================================================================ - 실행 ================================================================================ - 빌드하기 ================================================================================ - 실행하기 ================================================================================ ================================================================================ @Bean - 개발자가 제어할 수 없는 외부의 다른사람이 작성한 클래스들을 스프링 bean 으로 등록할 때 사용됨 @Component - 내가 작성한 컴포넌트 클래스에 붙여넣는다 ================================================================================ 스프링 bean 객체 - 스프링 IoC 컨테이너에서 생성하고, 호출하고, 소멸하기까지의 라이프 사이클 (생명주기) 를 관리하는 객체를 말한다 ================================================================================ - DI: 스프링에서 가장 중요한 개념 - Jackson object -> JSON 변환 라이브러리 - 일반적으로 객체의 인스턴스를 만드는 모습 - 일반적으로 라이브러리 기능을 사용하는 방식 ================================================================================ - 스프링 같은 IoC 컨테이너에서는 objectMapper 를 인스턴스로 직접 만들 필요가 없다 - ApplicationContext 가 구동되는 상황에서, - 어딘가에서, objectMapper 인스턴스를 스프링 bean 으로 등록 해놓았기 때문에, - @Autowired 어노테이션을 필드에 정의해놓으면, - 스프링 컨테이너가, "내가 가지고 있는 objectMapper 를 주입을 해주면 되겠네" 하고 인스턴스를 주입해줌 - 주입된 objectMapper 인스턴스를 바로 사용함 - 소스코드가 진행 되다가, 제어가 프레임워크쪽으로 넘어가서 (IoC, Inversion of Control), 프레임워크쪽에서 인스턴스를 주입하고, 다시 소스코드가 진행된다 ================================================================================ - 스프링진영에서 권장 - setter 를 통해 주입 - 필드에 어노테이션 ================================================================================ - 생성자 주입 방식을 쓸때, 생성자가 하나만 있어야 사용가능함 - @Service 가 있어서, 스프링프레임워크는 "이게 내가 관리해야할 컴포넌트구나" 하고 생각함 - "이 컴포넌트 안에서, 내가 관리하고 있는 BookRepository 를 쓰네" 하고 인스턴스를 주입해줌 ================================================================================ setter 메서드에 @Autowired 또는 BookRepository 파라미터 타입 앞쪽에 @Autowired ================================================================================