SpringBoot, 시작 시 Error SpringBoot 생성시 SpringBoot 생성 시 생성은 제대로 했지만 실행이 되지 않는 경우가 있다. Could not resolve all files for configuration compileClasspath 해당 Error가 그 주인공이다. SpringBoot를 제대로 실행하지 못해서 발생되는 ERROR이다. 해당 ERROR에 대해서는 조치는 간단하다. SpringBoot Project 사용 시,3.0 버전 이상 - Java Version 17 이상. (11 이하는 지원하지 않는다.)2.X.X 버전 - Java Version 11 지원 SpringBoot 생성 시, 이 점 주의하여 생성하기를 바란다.
JPA, 시간 Default 적용하기 시간 설정하는 방법 SpringBoot 시작할 때, @EnableJpaAuditing을 설정한다. @Entity에도 설정을 해야 한다. @EntityListeners(AuditingEntityListener.class)를 적용한다. @Column에는 화면과 같이 설정을 한다. @CreatedDate와 @LastModifiedDate는 Insert일 경우 등록된다. @LastModifiedDate는 해당 Entity일 경우 실행된다. 해당 JPA를 Insert 할 경우, 다음과 같이 등록된 것을 확인할 수 있다.
JPA, Not Null 처리하는 방법 - Default 적용 JPA ColumnDefault DB에서 NotNull의 처리는 까다롭다. 해당 칼럼 값 속성이 NotNull일 경우, Null이 값일 때, Insert가 되지 않기 때문이다. 그렇기에 중요한 값일수록 null은 매우 치명적이고, JPA가 Table을 관리하는 만큼 JPA에서 Not Null 설정 시 어떻게 할 수 있는지를 알아봐야 했다. 그러나 이는 약간 일반적인 상식과 거리가 멀었다. @ColumnDefault는 해당 필드가 null일 경우, 적용될 Default 값을 설정한다. @ColumnDefault는 해당 필드가 설정될 경우, Class 위에 @DynamicInsert를 적용해야 한다. Insert할 때 null이 발견될 경우 De..
SpringBoot, JSP 자동 업데이트 JSP 영역 SpringBoot에서 jsp를 사용한다면 불편한 점이 발생된다. 보통 html(View) 부분은 새로고침만 해도 자동 업데이트가 돼서 빠른 편집이 가능하다는 장점이 있지만, SpringBoot에서 실행했을 경우에는 새로고침을 눌러도 편집이 되지 않는다. 따라서, SpringBoot 재시작을 하면서 jsp를 편집해야하는 불편함이 존재한다. 그래서 아래와 같이 설정함으로써 jsp 편집을 편하게 할 수 있도록 설정하는 것을 권장한다. Gradle 설정하기 implementation 'org.springframework.boot:spring-boot-devtools'//jsp 자동업데이트 설정 Gradle에서 jsp의 설정을 하기 위해서는 spring-b..
SpringBoot, JSP 연결하기 SpringBoot 설정하기 SpringBoot에서 JSP를 불러오기 위해서는 다음과 같이 파일을 설정해야 한다. webapp 디렉터리 생성, WEB-INF 디렉터리도 생성해야 한다. JSP를 한 번쯤 사용했다면, 'jsp는 WEB-INF 안의 내용을 불러온다.'라고 배운 적이 있을 것이다. 그런 의미로, JSP를 사용하기 위해서는 기본적으로 위와 같이 설정해야 한다. Gradle 설정 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl' Gradle 사용할 경우, 두 가지의 설정은 반드시 해야 한다. JSTL은 JSP사용을 좀 더 매끄럽게 하기 위..
SpringBoot, Logback 설정하기 Logback 사용하는 계기 Java를 Test를 한다면 가장 대표적인 명령어, System.out.println() 이 있다. 보통 우리가 개발할 때는 이 언어를 주로 사용하지만, 만약 실 사용서버에서 사용할 경우에는 위의 명령어가 무섭게 느껴질 수 있다. System에서 가져다 쓰는 static의 규칙으로 인해 우리는 항상 console창에 해당 파일이 실행되는 여부를 파악할 수 있었다. 그러나 System에서 가져다 쓰는 만큼 메모리 사용량이 그만큼 높아지고, 그렇기 때문에 남발할 경우 서버의 사양을 높일 수도 있다는 경우가 있기 때문이다. 따라서 System.out.print 대신 Logback를 사용하게 된다. logback 설정하기 해당 Projec..
SpringBoot, JPA 연동하기 JPA 시작하기 JPA는 MyBatis 다음으로 가장 많이 사용하는 언어 중 하나로 손꼽히고 있다. 그런만큼 SpringBoot를 공부하면서 JPA를 시작하게 되었고, 이틀간의 노력으로 JPA를 통해 처음으로 insert 작업이 성공되었다. Gradle 설정하기 dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' implem..
SpringBoot, Interceptor 사용하기 Interceptor Interceptor은 BackEnd, Server부분에서 알아두면 좋은 기술이다. 각 회사마다 지켜주는 사람이 있듯이, Server에 접근할 때 권한 여부를 판독하는 기능 중 하나가 Interceptor이다. 대표적으로 사용예시는 로그인 여부, 권한 체크 등이 있다. Controller의 Error를 미리 잡아주며, 유효성 검사에도 도움이 된다. 이 기능의 활용이 login check여부이다. 반드시 사용할 필요는 없지만, 객체지향 프로그램(OOP)의 장점을 아주 잘 활용한 예시라고 생각되며 중복된 코드를 최소화시킬 수 있어서 애용하는 기능 중 하나이다. 사용하기 위해서는 org.springframework.boot sprin..
SpringBoot, API 방식으로 File Upload 하기 파일 업로드 설정 #MultiPart spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB spring.servlet.multipart.location=D:\\const/test SpringBoot를 사용한다면 위와 같은 코드를 활용하면 된다. 필요에 따라서 추가해도 되고, 삭제해도 된다. max-file-size : 전송되는 개별 파일 크기 제한 max-request-size : 서버에 전송되는 파일의 크기 제한 location : 저장위치 기본 설정 값 (경로에 폴더가 없을 경우 폴더가 새로 생성된다) 파일 업로드하기 @PostM..
SpringBoot, API 활용하기 API 란? Application Programming Interface의 약자로 응용프로그램에서 사용할 수 있도록 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 Back-End에서 다루며, Server와 DB의 연결을 수행하기 위해 존재한다. 또한 사용자들에게 공개되는 WEB 하고 다르게, API는 WEB에서 별도의 프로젝트로 구성되어 있어서 보안성이 높은편에 속한다. 그리고 요즘 트랜드인 비동기방식을 활용하기 위해서도 WEB에서도 API 방식을 활용하기도 한다. API 사용 방법 @GetMapping("/test123") @ResponseBody public void Test_Service() { logger.info("가나다1..
SpringBoot, Test JUnit 생성하기 Test 만들기 Test를 하기 위해서는 기존에 작업했던 main이 아닌, 아래의 test를 이용해야 한다. Test는 실행과 상관없이, 해당 메서드가 실행되는 여부를 판단한다. 본 내용에는 문제가 생기지 않으며, 상황에 맞는 테스트를 수행하기 위해 적합한 장소이다. 인텔리제이는 ctrl + shift + T를 눌러서 수행한다. JUnit 생성시 기존 Code에 있는 method를 가져올지 여부를 판단한다. OK를 누르면 똑같이 파일을 가져온다. 아무 것도 없는 빈 깡통이 넘어왔다. 해당 내용은 본 main글에서 필요한 부분을 갖다 붙이면 된다. @Test라는 명칭이 붙었으므로, @Test로만 사용할 수 있게 도와준다. 해당 부분을 클릭하면, 원하는 부분..
SpringBoot, MyBatis 연동하기 준비된 것 PC에 설치된 DB와 개발환경 정도가 필요하다. 개인적으로 MariaDB가 친숙하므로 MariaDB를 사용하도록 했다. org.mariadb.jdbc mariadb-java-client 2.7.4 org.mybatis.spring.boot mybatis-spring-boot-starter 2.2.2 설치 후 Maven을 통해 lib가 설치된 것을 반드시 확인해야 한다. 자동으로 설치되면 좋겠지만, 등록만 하고 설치가 안돼서 되지 않는 경우가 발생하기도 한다. 기본 설정 #MyBatis 설정 mybatis.type-aliases-package=com.union.construction_api.Domain #SQL 문법 있는 위치. mybatis.mapp..
SpringBoot 시작하기 Spring Boot 입문 Spring Boot의 시작은 매우 간단하다. main => resources 파일 안의 static의 index.html을 만들면 끝이다. Spring Boot의 시작과 함께 주소창에 localhost:포트 입력하게 되면 다음과 같이 화면이 출력된다. Spring은 실행 시, 제일 먼저 index부터 찾는다. 마찬가지로 Spring Boot 또한 index를 찾는다. 만약, index가 없을 경우, templates안의 index를 찾고, 그러고도 없다면 error를 발생시킨다. Java 부분 이용하기 Java 부분은 더욱 간단하다. Class명 위의 @Controller를 입력한다. MVC 패턴의 Controller이다. Servlet의 어노테..
SpringBoot 기본 라이브러리 라이브러리 Spring Boot의 라이브러리는 좌측의 build.gradle에 들어있다. Maven으로 말하자면 porm.xml 같은 녀석이다. 이곳에 들어있는 라이브러리는 약 3개 정도가 존재한다. 그러나 이들이 가지고 있는 라이브러리는 스크롤이 생길 정도로 엄청난 수를 자랑한다. 이는 Spring의 의존성 주입과 비슷한 형태로 해당 라이브러리를 사용하기 위해 다른 라이브러리를 불러온 현상이라고 할 수 있다. 맨 처음 불러온 Spring - boot - starter - web을 사용하기 위해 우리는 Java에서 배웠던 의존성 주입을 사용해야만 했다. 이 의존성 주입이 된 객체는 다른 객체를 다시 끌고 오고, 그 객체가 다른 객체를 끌고 오는 방식을 사용하다 보니 고..
SpringBoot Port 변경하기 Spring Boot 실행 Spring Boot 실행 시 많은 문구가 올라간다. 그 문구를 자세히 들여다보면 WAS 서버 중에서 Tomcat이라는 문구를 찾을 수 있다. Spring Boot는 Tomcat이 내장으로 들어있어서 별도의 Server 설정 없이 실행할 수 있다는 장점이 있다. Spring Boot 실행 시, 기본 Port는 8080이다. 실행 결과를 확인하기 위해 localhost:8080으로 접속했지만, 내가 원하는 화면은 나오지 않고 엉뚱한 것이 이미 port를 차지한 것을 알 수 있다. 이를 해결하기 위해서는 Spring Boot의 기본 port를 변경할 수밖에 없다. Port 변경 방법 src > resources > application.prop..