Spring 4

스프링 삼각형! IoC와 DI를 이해해보자

IoC와 DI는 스프링의 3대 프로그래밍 모델의 한 부분을 차지하는 개념입니다. 위 그림처럼, Plain Old Java Object(POJO)를 기반으로 IoC/DI, AOP, PSA 개념들이 삼각형으로 이루고 있어, 이를 스프링 삼각형이라고 부릅니다. POJO는 프레임워크의 도움 없이도 돌아가는 순수 자바 객체를 말합니다. 여기서 IOC와 DI를 항상 IOC/DI라고 표기하는데, 같은 개념으로 이해하는 경우가 많습니다. (저도 스프링을 처음 접할땐 그랬습니다...) 하지만, 엄연히 말하자면 같은 개념은 아닙니다. 같은 개념은 아니지만 뗄 수 없는 관계인 IOC와 DI 그럼, 이 둘은 어떻게 다른지 또 어떤 관계인지 알아보겠습니다. DI에 대하여 Dependency Injection : 의존성 주입 I..

Spring 2021.08.01

WARNING: An illegal reflective access operation has occurred 해결 방법

@Test @DisplayName("로그인 컨트롤러 진입 테스트") void loginSuccess() throws Exception { MultiValueMap map = new LinkedMultiValueMap(); map.add("id", "test"); map.add("password", "1234"); mockMvc.perform(post("/users/login") .params(map)) .andExpect(status().isOk()) .andDo(print()); } 단순히, 로그인 컨트롤러에 접근 가능한지 테스트를 하고 있었다. 테스를 돌려보니, 아래와 같은 경고가 떴다. 테스트는 성공했기에, 큰 문제는 아닌 것 같았지만 빨간색 글씨로 illegal access 란 문구가 매우 거슬렸..

Spring 2021.07.14

Gradle이란 무엇인가?

Gradle == 빌드 도구 위키백과에 대략적으로 서술된 내용을 보면, 그레이들은 Groovy를 이용한 빌드 자동화 시스템이다. 그럼 Groovy는 무엇인가? JVM에서 실행되는 스크립트 언어이며, Java와 문법이 아주 비슷하고, Java와 호환이 되며 Java 클래스 파일을 그대로 Groovy 클래스로 사용할 수 있다. 저렇게, dependencies 안에 포함된 코드들로 외부 의존성들을 주입할 수 있다. 빌드 자동화의 목적은 개발자가 반복적으로 해야 하는 코딩을 잘 짜여진 프로세스를 통해 자동으로 실행하며, 믿을 수 있는 결과물도 생산해 낼 수 있는 일련의 작업방식 및 방법을 말한다. 다시 말해, - 빠른 기간 동안 계속해서 늘어나는 라이브러리의 추가와 - 프로젝트를 진행하며 라이브러리의 버전을 쉽..

Spring 2021.07.07

AWS + SpringBoot + Mustache + Jar 404에러

Spring + Jsp 환경에서만 개발할땐 몰랐던 내용들을 springboot를 공부하면서 많이 배운다... 일단 Jsp로만 개발하려다가 속도이슈로 Mustache로 전체 다 바꿔줘야 하는 불상사가 생겼는데 이건 추후 더 정리하고 글을 쓰려 한다. 제목처럼 배포했는데 local에선 잘되지만 ec2에 배포하는 순간 404에러를 뜨면서 url을 잘못호출했다는 알림을 준다. 해결방법은 Controller return값에서 "/index"; 이렇게 되어 있다면 "index";로 바꿔줘야 하고, 그래도 안되는 경우가 있었는데.. @GetMapping("/login") public String openAdminLogin() throws Exception { return "login/loginMain"; } 위 Ge..

Spring 2021.03.24