본문 바로가기

분류 전체보기369

동물원 예약 시스템 프로젝트 시작!

안녕하세요. 이제 다음 주면 저의 첫 직장의 퇴사가 이루어집니다. 이제 백수로서 새로운 포트폴리오를 만들어서 재취업을 할 생각입니다. 그래서 오늘 프로젝트를 생성했습니다. 자바 버전은 11이고, Maven으로 의존성 관리를 할 생각입니다. 스프링부트는 2.4버전을 사용하려고 합니다. 제가 받은 의존성은 다음과 같습니다. - Spring Boot DevTools - Lombok - Thymeleaf - Spring Security - H2 Database - PostgreSQL Driver - Java Mail Sender - Spring Web 2020. 9. 6.

import와 의존성 주입은 다른가?

안녕하세요. 웹 앱을 따라 만드는 강의를 들으면서(저도 이런 생각이 드는 걸 보면... 아주 심각하게 모르는가 봅니다..) import로도 다른 패키지의 클래스를 가져다 사용하면서... 왜 동일하게 기능을 하는 의존성 주입을 사용하는 걸까요? import도 의존성 주입이 아닌가요??????? 일단, 저는 지금까지 import가 정확히 어떤 의미를 가지고 어떤 역할을 하는지 알지 못했습니다. 그 개념부터 알아보겠습니다. 저는 집에 있는 자바의 정석 책을 통해서 알아보았습니다. import문의 역할은 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것이다. 컴파일 시에 컴파일러는 import문을 통해 소스파일에 사용된 클래스들의 패키지를 알아낸 다음, 모든 클래스이름 앞에 패키지명을 붙.. 2020. 8. 23.

단위테스트에서 여러 properties 중 한 개만 지정하기

안녕하세요. 지금까지 인강을 통해서 만들어온 프로젝트를 복습할 겸, 이것저것 소스도 둘러보고, 웹앱도 잘 동작하는지 테스트도 하고, 그리고 단위 테스트도 전부 돌려보는 시간을 가졌습니다. 그런데... 단위 테스트에 엄청난 오류가 발생하고 있었습니다. 에러 메시지 java.lang.IllegalStateException: Unable to create SecurityContext using @com.studyolle.WithAccount(value="devkis") Caused by: org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint ["PUBLIC.UK_Q0UJA.. 2020. 8. 22.

단위테스트에서 FK관계에서 발생한 DataIntegrityViolationException 에러

안녕하세요. 단위테스트에서 또 오류가 발생해서 해결방법을 공유해보고자 합니다. 이번 오류는 정말 중요한 개념이 있는 오류였습니다.. 이 개념을 혼자 공부할 때 알게된 걸 천만다행으로 생각합니다. 에러 원인은 Foreign Key로 다른 테이블로부터 참조를 당하고 있는 계정 테이블의 데이터를 삭제하려고 하니 발생하는 문제였습니다. 사용 중인 기술 스택 스프링부트 JUnit5 인메모리 디비(h2) Spring data JPA 에러가 발생하는 단위테스트 클래스에서는 멤버 메서드가 실행될 때마다, 매번 계정을 새로 인메모리 디비에 저장하고 로그인이 된 상태로 맴보 메서드가 수행이 되고, 메서드 동작이 종료되면 @AfterEach 메서드로 계정정보를 날리도록 만들어져 있습니다. 여기서 문제가 발생하는 부분은 메서.. 2020. 8. 20.

properties 두 개 설정하기

안녕하세요. 이번 글에서는 인텔리제이에서 스프링부트의 두 가지의 properties가 동작하도록 하는 설정 방법을 알아보겠습니다. 저는 스프링부트를 사용하고 있고 얼마 전, 프로젝트가 실행되면 인메모리 디비도 사용하고 postgreSQL도 사용되도록 application.properties와 application-dev.properties를 두 개 만들어서 앱이 실행될 때, 두 properties가 각각 동작하도록 설정했습니다. application.properties application-dev.properties - 인메모리 디비를 사용하고, - spring.jpa.hibernate.ddl-auto=create-drop 로 설정하였습니다. - 프로젝트가 생성될 때 스키마가 생성되고, 그 테이블에 데이.. 2020. 8. 14.

[MacOS]특정 포트 프로세스ID 찾아서 죽이기

안녕하세요. 맥북으로 postgreSQL을 설치했는데, 이미 사용 중인 포트로 뜨는겁니다. 알고보니까 예전에 docker에 깔아놨던 postgreSQL이 5432포트를 잡고 있어서 이번에 새로 설치한 postgreSQL이 실행되지 않았던 것이었습니다. Mac Terminal창에서 특정 포트의 프로세스ID를 찾고 해당 프로세스를 강제로 종료시키는 명령어는 다음과 같습니다. - 특정 포트의 PID 찾기 lsof -i : PORT - PID 죽이기 kill -9 PID 2020. 8. 11.

[PostgreSQL]macOS에 postgreSQL 설치 및 실행

안녕하세요. 이번에는 관계형 데이터베이스 중 하나인 postgreSQL을 사용해보려고, 맥북에 설치하면서 알게된 점을 정리를 해보려고 합니다. postgreSQL 사이트에 들어가서 보면, MAC운영체제에서 다운로드 하는 방법이 많은데, 저는 그냥 웹 상에서 disk를 다운받아서 application을 추가하는 방식으로 설치를 했습니다. 1. 설치 페이지에 접근 여기 2. 페이지에서 macOS를 선택합니다. 3.postgres.app을 클릭합니다. 4. 설치 설치 완료 후 우측 상단에 상태표시_바에서 코끼리 아이콘을 확인을 할 수 있습니다. 열어보면 다음과 같은 팝업창에서 PostgreSQL에서 사용 중인 DB상태를 확인할 수 있습니다. 설치 후에는 터미널에 다음 명령어를 입력해서 데이터베이스와 권한을 가.. 2020. 8. 11.

왜 @Entity에는 @AllArgsConstructor와 @NoArgsConstructor가 필요한가?

안녕하세요. 이번 글에서는 @Entity객체에 왜 @AllArgsConstructor와 @NoArgsConstructor가 필요한지 알아보고자 합니다. 일단, 두 어노테이션은 객체의 생성자를 만들어줍니다. 생성자의 정의는 위키피디아에서 다음과 같이 정의되어 있습니다. 생성자(영어:constructor, 혹은 약자로 ctor)는 객체 지향 프로그래밍에서 객체의 초기화를 담당하는 서브루틴을 가리킨다. 생성자는 객체가 처음 생성될 때 호출되어 멤버 변수를 초기화하고, 필요에 따라 자원을 할당하기도 한다. 객체의 생성 시에 호출되기 때문에 생성자라는 이름이 붙었다. @AllArgsConstructor는 객체의 모든 필드를 가지는 생성자를 자동으로 만들어주는 lombok 어노테이션입니다. @NoArgsConstr.. 2020. 8. 8.

ObjectMapper

objectMapper 스프링에 빈으로 등록이 되어있다. 참고 문서 How to convert Java object to / from JSON (Jackson) - Mkyong.com - How to convert Java object to / from JSON (Jackson) mkyong.com 1. 빠른 참조 1.1 JAVA 객체를 JSON으로 변환하기, writeValue(..) ObjectMapper의 JAVA객체를 JSON으로 변경해주는 주요 메서드 objectMapper.writeValueAsString(객체); objectMapper.writeValue(파일, 객체); ObjectMapper mapper = new ObjectMapper(); User user = new User(); //.. 2020. 8. 8.

[면접]springboot 예상 질문

안녕하세요. 이번 글은 페이스북에서 좋은 글이 올라온 것 같아서 한번 정리해 보았습니다. Springboot 면접 질문 1. Spring Boot Common Interview Questions 스프링부트는 자바 개발을 위해 spring framework를 단순하게 사용하기 위한 것입니다. 기존의 Spring framework는 많은 설정과 몇몇 jar파일들 그리고 어려운 startup curve의 특징을 가지고 있었습니다. 개발자들이 고통스러운 원인이기도 했습니다. springboot는 이런 고통을 해소시켜 줍니다. 질문1. 스프링부트는 뭔가요?(질문가능성 : 하) Spring Boot는 개발의 simpify를 최우선으로 한 java framework입니다. Spring Boot는 Spring MVC .. 2020. 7. 30.