Spring Boot 2.2.x 버전부터는 junit5가 기본으로 설정되어있음

해당 프로젝트에서는 junit4를 사용하기 위해 변경

 

 

1. build.gradle -> dependencies 안에 아래 코드 넣기

testImplementation("org.junit.vintage:junit-vintage-engine") {
    exclude group: "org.hamcrest", module: "hamcrest-core"
}

 

2.Reload

코딩 중 html 수정 후 매번 서버 재시작이 번거러움

spring-boot-devtools 라이브러리 사용한다면 재시작 없이 변경 사항을 바로 확인 가능

spring-boot-devtools 라이브러리를 추가하면, html 파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경이 가능

 

[수정]

1. build.gradle -> dependencies -> spring-boot-devtools 라이브러리 추가

 

 

아래 코드 추가

implementation 'org.springframework.boot:spring-boot-devtools'

 

2. Gradle reload 필수

 

3. html 수정 후 인텔리J 컴파일

 - 인텔리J 컴파일 방법: 메뉴 build -> Recompile

 

4. 테스트

 

 

 

[오류]

Spring Boot 프로젝트 생성 후 바로 run 할 경우 아래와 같은 오류 발생 및 무한 로딩

 

[해결방안]

1. 가급적 JDK 11을 설치 및 진행

2. Settings -> Gradle 들어가기

다음 이미지를 참고해서 해당 부분을 IntelliJ IDEA로 변경

2. 다시 실행

 

 

Bean이란 ?

스프링 컨테이너에 등록한 객체들을 Bean 이라고 한다

 

자바 어플리케이션은 어플리케이션 동작을 제공하는 객체들로 이루어져 있어

객체들이 서로 상호작용하며 동작하느데 이때, 상호작용하는 객체를 '객체의 의존성'이라고 표현한다

 

 

 

Bean의 특징

  • @Configuration 설정된 클래스의 메소드에서 사용 가능
  • 메소드의 리턴 객체가 스프링 빈 객체임을 선언
  • 빈의 이름은 기본적으로 메소드의 이름
  • @Bean(name = "name")으로 이름 변경 가능
  • @Scope를 통해 객체 생성 조정 가능
  • @Component 어노테이션을 통해 @Comfiguration 없이 빈 생성 가능
  • 빈 객체에 init(). destory() 등 라이프사이클 메소드를 추가한 다음 @Bean에서 지정 가능

 

Bean 등록 2 가지

 

첫번째. 컴포넌트 스캔과 자동 의존관계 설정

클래스 선언부 위에 @Component 어노페이션 사용

 

@Service, @controller, @Repository 모두 @Component를 상속받고 있으며,

해당 어노테이션으로 등록된 클래스들은 스프링 컨테이너에 의해 자동으로 생성되어 스프링 빈을 등록된다

 

두번째. 자바 코드로 직접 스프링 빈 등록

수동으로 스프링 빈을 등록하려면 자바 설정 클래스를 만들어 사용

 

1.설정 클래스를 만들고

2.@Configuration 어노테이션을 클래스 선언부 위에 추가

3. 특정 타입을 리턴하는 메소드 만들고

4. @Bean 어노테이션을 붙여주면 자동으로 해당 타입의 빈 객체 생성됨

 

 

 

1번 방법이 간단하고 많이 사용되지만, 2번 방법도 사용에 따라 사용됨

 

- @Autowired

생성자에 @Autowired가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어줌

이렇게 객체 의존관계를 외부에서 넣어주는 것을 '의존성 주입(DI)'이라고 한다

 

** Bean 등록시 주의 사항

스프링은 스프링 컨테이너에 스프링 빈 등록 시, 기본으로 싱글톤으로 등록

 

+ Recent posts