Spring

[Spring] 실습 : DI 프로그램 만들기

기록하는_사람 2022. 11. 2. 18:14

DI 프로그램 만들기

📌 프로젝트 생성

① 아래 사이트 접속.

https://start.spring.io/

② ADD ... 클릭 후 Sprint Boot Dev Tools 선택. 

③ 아래와 같이 선택 후 GENERATE 클릭.

④ 다운로드한 파일 'DependencyInjectionSample.zip'으로 이름 변경.

⑤ 압출 풀고, IntelliJ IDEA에서 파일 → 열기 압축 푼 폴더 선택.

 

📌 패키지 생성

① src/main/java/com/example/demo 우클릭, 'di.used' 패키지 생성.

② di.used 우클릭, 자바 클래스 → 인터페이스 생성. 'Greet'

 di.used 우클릭, 자바 클래스 → 클래스 생성. 'MorningGreet', 'EveningGreet'

 

💡 Spring Initializr에서 스프링 부트 프로젝트를 생성하면, 기본적으로 Project Name + Application 클래스가 생성됨.

    이 클래스는 @SpringBootApplication 주석이 부여됨.

 

💡 메인 메서드를 포함함 클래스에 @SpringBootApplication이 부여되면, 스프링 부트 애플리케이션이라고 인식됨.

 

📄 DemoApplication.java

package com.example.demo;

import com.example.demo.di.used.Greet;
import org.springframework.beans.factory.annotation.Autowired;
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)
				.getBean(DemoApplication.class).execute();
	}

	@Autowired  // 규칙 5 : 스프링 프레임워크에 의해 생성된 인스턴스를 이용하는 클래스에 참조받는 필드를 선언하고, 필드에 어노테이션 부여.
	Greet greet;

	private void execute() {
		greet.greeting();
	}
}

📄 Greet.java

package com.example.demo.di.used;

import org.springframework.beans.factory.annotation.Autowired;

public interface Greet {
    void greeting();
}

📄 MorningGreet.java

package com.example.demo.di.used;

import org.springframework.stereotype.Component;

@Component  // 규칙 3, 4 : 인스턴스를 생성하려는 클래스에 인스턴스 생성 어노테이션을 부여.
public class MorningGreet implements Greet {
    @Override
    public void greeting()  {
        System.out.println("Good Morning:)");
    }
}

📄 EveningGreet.java

package com.example.demo.di.used;

public class EveningGreet implements Greet {
    @Override
    public void greeting()  {
        System.out.println("Good Evening:)");
    }
}

 

참고

https://codingrecord2209.tistory.com/282

 

[Spring] DI 컨테이너

의존성 📌 의존성 ① 클래스 의존(구현 의존) ② 인터페이스 의존 DI 컨테이너 📌 의존성 주입(Dependency Injection) : 의존하는 부분을 외부에서 주입하는 것. 의존하는 부분 : '사용하는 객체' 클래

codingrecord2209.tistory.com

 

https://codingrecord2209.tistory.com/291

 

[Spring] Spring Initializr

Spring Initializr 📌 Spring Initializr : 스프링 부트에서 프로젝트를 시작할 때, 통합 개발 환경에 의존하지 않는 프로젝트를 만들 수 있음. https://start.spring.io/ 📌 사용법 Project 빌드 도구. Language 사용

codingrecord2209.tistory.com