스프링 부트 설정 에러

개발공부 2020. 1. 22. 15:18
반응형

스프링 부트 설정 관련 검색을 하다보면 항상 보이는 문구..

스프링 부트는 스프링에 비해 설정이 쉽고.. 어쩌고..

그런데 저는 안되더라고요.. 아래 이런 에러도 뜨고..

re-run spring boot configuration annotation processor to update generated metadata

몇 시간의 삽질 끝에 알아낸 이유.. 나의 삽질기록. ㅜㅜ

나처럼 intellij를 사용한지 얼마 안된 분.. 스프링/부트 설정을 삽질하고 계신 분들.. gradle을 접한지 얼마 안되신 분들께 이 글이 도움되길..


intellij 에서 프로젝트를 새로 생성하고 호기롭게 스프링 부트 설정을 했다.

File > New > Project

gradle, spring boot web 이외에는 선택하지 않음.

 

application.properties 파일을 삭제하고 application.yml 설정파일을 하나 만들었다. 

별 내용은 없고, 테스트를 위한 문자열을 셋팅했다.

해당 설정을 읽기 위한 별도의 셋팅은 없다.

부트는 알아서 다 해준다고.. application.properties 이든, application.yml과 같은 이름이라면 알아서 읽어줌. (매뉴얼 참고: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-profile-specific-configuration)

자.. 설정파일을 읽어봅니다. 짜잔.. 아래처럼 TestController를 생성하여 프로퍼티 셋팅을 @Value 로 셋팅해보았다.

Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'test-api.url' in value "${test-api.url}"

에러가 뙇.

 

뭐가 문제일까..?

아무리 우측의 gradle 탭에서 새로고침도 해보고 Task > build를 실행해봐도.. 되는 척만 할 뿐..

build.gradle 파일을 한번 열어보자.. 보이나요 회색 회색.. 모두 흐리멍텅.. ^,^..

 

build.gradle 우클릭 > import Gradle Project 선택 

 

하는 즉시 intellij 가 바빠짐.

 

흐리멍텅하던 상태가 오색찬란하게 바뀐다.

다시 run 하여 http://127.0.0.1:8080/ 를 호출하면 application.yml의 test-api.url 값을 잘 읽어올 수 있다.

 

요약: 프로젝트 생성 후 import gradle project 를 꼭 수행합시다.

반응형

'개발공부' 카테고리의 다른 글

Docker 네트워크 설정  (0) 2020.11.01
Docker 터미널 설치 - Mac OS  (0) 2020.10.31
JUnit으로 컨트롤러 테스트  (0) 2019.09.04
JSP 파일 생성시 에러  (0) 2017.05.17
maven 셋팅 에러  (0) 2017.05.17
posted by 알릿수

일산 - 제이든 더 부처(Jaden the Butcher)

먹부림 2020. 1. 8. 00:35
반응형

오랜만에 뭉친 셋~

평소와 다르지않게 육덕진 음식을 물색하던 중..

나는 그저 플레터에 꽂혀 있었던 것 뿐이고..
돈스파이크 가게는 이태원까지 가야하고..
우린 체력이 없고 시간도 없고..

와중에 일산에 플레터 맛집이 있다는 사실을 발견하였다!
이는 2020년을 여는 중대한 발견이었음을..
음식을 맛보기전까지 아무도 알지못했다.

 

 

짜잔~
백마역과 정발산역 사이에 자리잡고 있다.

 

셋이서 풀드포크 플래터/크림파스타 + 토마토파스타
요렇게 요리를 시키고 코젤다크 생맥 세잔!

 

영롱한 자태..
치즈 .
..

오밤중에 사진보니 식욕이 돋는다.

 

첨 먹어보는 코젤다크 생맥..
주변에 흑설탕과 계피가루를 뿌려줌ㅎㅎ

 

파스타 둘다 성공적~

셋다 만족하고 나옴..
고기양을 보고 배가 찰까? 했는데 기우였다!
기! 우!

 

꼭 빠른시일내에 재방문 할것이야ㅜㅜ..
육덕식사랑 미식회는 계속된드아..

 

반응형

'먹부림' 카테고리의 다른 글

서대문 - 복운각  (0) 2017.06.14
일산 - 벨라시타 조슈아버거  (0) 2017.06.11
일산 - 벨라시타 바나나 BarNANA  (0) 2017.05.17
일산 - 벨라시타 배터리파크  (0) 2017.05.17
홍대 - 또 보겠지 떡볶이  (0) 2017.02.04
posted by 알릿수

JUnit으로 컨트롤러 테스트

개발공부 2019. 9. 4. 13:03
반응형

1. JUnit5 는 JDK9부터 사용 가능

프로젝트에서 JDK8을 쓰고있어 JUnit4를 사용합니다.

2. 프로젝트 디렉토리 구조

관례적으로 아래와 같은 디렉토리를 구성하도록 합니다.

테스트가 필요한 소스 클래스에서 Ctrl + Shift + T 를 누르면 IDE가 소스 디렉토리와 동일한 위치에 Test 클래스를 생성해줍니다.

project
  ㄴsrc
    ㄴmain
      ㄴjava
        ㄴcontroller
          ㄴHistoryController.java
        ㄴrepository
          ㄴHistoryRepository.java
      ㄴresources
    ㄴtest
      ㄴjava
        ㄴcontroller
          ㄴHistoryControllerTest.java
        ㄴrepository
          HistoryRepositoryTest.java
       ㄴresources


Test 파일은 소스 파일과 같은 경로에 위치하도록 합니다.

3. Annotation

스프링 부트에서 JUnit 테스트를 하기 위해서는 테스트 클래스 위에 아래 어노테이션이 필요합니다.

@RunWith(SpringRunner.class)

@SpringBootTest

 

4. Controller 테스트 (MocMvc 사용하기)

만약, 컨트롤러 테스트를 위하여 MockMvc를 사용하고자 한다면, 아래와 같은 어노테이션을 추가해주어야 합니다.

(@SpringBootTest 어노테이션 만으로는 서버를 실행하지 않기 때문이라고 함..)

@AutoConfigureMockMvc

추가하지 않는다면 아래와 같이 MockMvc를 @Autowired 하였을때 불평을 합니다.

Could not autowire. No beans of 'MockMvc' type found.

컨트롤러 테스트 클래스는 아래와 같은 어노테이션을 갖게 됩니다.

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class HistoryControllerTest {

    @Autowired  
    private MockMvc mvc;

}

 

5. Test 함수 작성(GET Method)

JUnit으로 Test 함수가 실행되기 위해서는 아래와 같은 조건이 필요합니다.

  • 함수의 상단에 @Test 어노테이션이 필요합니다.
  • 접근제어자가 public 이어야 합니다.
  • 함수의 return 타입이 void 여야 합니다.

 

6. GET Method Test

HistoryControllerTest에서 HistoryController가 제공하는 api를 호출하는 함수를 작성합니다.

테스트 대상 URL은 http://localhost:8080/history/load 로 동작하며,
아래의 코드로 해당 URL로의 GET request의 응답이 200인지 확인해봅니다.

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class HistoryControllerTest {
	@Autowired
    private MockMvc mvc;
    
    @Test
    public void loadDump() throws Exception {
        this.mvc.perform(get("/history/load"))
                .andExpect(status().isOk());
    }
}

 

반응형

'개발공부' 카테고리의 다른 글

Docker 터미널 설치 - Mac OS  (0) 2020.10.31
스프링 부트 설정 에러  (0) 2020.01.22
JSP 파일 생성시 에러  (0) 2017.05.17
maven 셋팅 에러  (0) 2017.05.17
svn branch 리스트 확인  (0) 2017.03.23
posted by 알릿수