WEB/Spring
-
2024-03-18 1. 방법 @Builder.Default 를 사용하여 TestDataClass.builder().build() 와 같은 형식으로 선언해도 아래처럼 정의된 값들이 들어가게 할 수 있다. import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Arrays; import java.util.List; @Data @Builder @NoArgsConstructor @AllArgsConstructor public class TestDataClass { @Builder.Default private String name = "kin..
Builder 형식의 Data 클래스 필드값 Default 설정하는 방법2024-03-18 1. 방법 @Builder.Default 를 사용하여 TestDataClass.builder().build() 와 같은 형식으로 선언해도 아래처럼 정의된 값들이 들어가게 할 수 있다. import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Arrays; import java.util.List; @Data @Builder @NoArgsConstructor @AllArgsConstructor public class TestDataClass { @Builder.Default private String name = "kin..
2024.03.18 -
2024-02-27 1. 준비 우선 자신의 개발 환경에 맞게 properties를 생성해 준다. 네이밍은 위와 같이 application-[개발환경].properties의 형식으로 만들어주어야 한다. 현재 프로파일이 어떤 건지 확인할 수 있게 아래와 같이 application-[개발환경].properties에 명시에 주었다. profile.now=dev_profile 2. 방법 아래는 application-[개발환경].properties 에 명시에 둔 키값을 맵핑할 enum이다. public enum ProfileKey { NAME; public String str() { return "profile.now"; } } 다음으로 현재 프로파일 정보를 편하게 사용하기 위한 enum을 하나 생성해 준다. (해..
Spring boot profile 설정 방법 [properties 기준]2024-02-27 1. 준비 우선 자신의 개발 환경에 맞게 properties를 생성해 준다. 네이밍은 위와 같이 application-[개발환경].properties의 형식으로 만들어주어야 한다. 현재 프로파일이 어떤 건지 확인할 수 있게 아래와 같이 application-[개발환경].properties에 명시에 주었다. profile.now=dev_profile 2. 방법 아래는 application-[개발환경].properties 에 명시에 둔 키값을 맵핑할 enum이다. public enum ProfileKey { NAME; public String str() { return "profile.now"; } } 다음으로 현재 프로파일 정보를 편하게 사용하기 위한 enum을 하나 생성해 준다. (해..
2024.02.27 -
2024-02-23 1. 방법 build.gradle ... configurations { configureEach { //기본 스프링의 로그백과의 충돌 방지를 위해 제외시킨다. exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' } ... } ... dependencies { ... implementation "org.springframework.boot:spring-boot-starter-log4j2"; ... } ... application.properties ... #logging setting logging.config=classpath:log4j2/log4j2-local.xml ... log4j2-lo..
Spring boot log4j2 셋팅 방법 정리2024-02-23 1. 방법 build.gradle ... configurations { configureEach { //기본 스프링의 로그백과의 충돌 방지를 위해 제외시킨다. exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' } ... } ... dependencies { ... implementation "org.springframework.boot:spring-boot-starter-log4j2"; ... } ... application.properties ... #logging setting logging.config=classpath:log4j2/log4j2-local.xml ... log4j2-lo..
2024.02.23 -
2024-02-19 1. 방법 자신의 프로파일에 맞는 application.properties 파일에 아래와 같이 설정값을 변경해주면 된다. spring.servlet.multipart.maxFileSize=10MB spring.servlet.multipart.maxRequestSize=10MB 메인 이미지 출처 : 사진: Unsplash의Daniel J. Schwarz
Spring Boot 파일 업로드(multipart) 용량제한 설정하기 Resolved [org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded]2024-02-19 1. 방법 자신의 프로파일에 맞는 application.properties 파일에 아래와 같이 설정값을 변경해주면 된다. spring.servlet.multipart.maxFileSize=10MB spring.servlet.multipart.maxRequestSize=10MB 메인 이미지 출처 : 사진: Unsplash의Daniel J. Schwarz
2024.02.19 -
2023-11-18 1. 원인 Spring를 빌드하다 보면 아래와 같은 WARN 이 뜨는 경우가 있다. JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 해당 부분을 살펴보자. OSIV(View의 Open Session)는 그림과 같이 View 계층이 프록시 초기화를 트리거할 수 있도록 지속성 콘텍스트를 열어두도록 강제한다. 쉽게 표현하자면 JPA의 영속..
[Spring] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 해결 방법2023-11-18 1. 원인 Spring를 빌드하다 보면 아래와 같은 WARN 이 뜨는 경우가 있다. JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 해당 부분을 살펴보자. OSIV(View의 Open Session)는 그림과 같이 View 계층이 프록시 초기화를 트리거할 수 있도록 지속성 콘텍스트를 열어두도록 강제한다. 쉽게 표현하자면 JPA의 영속..
2023.11.18 -
2023-10-27 1. 주요 빌드 정보 implementation 'org.springframework.boot:spring-boot-starter-websocket' implementation 'org.webjars:sockjs-client:1.1.2' implementation 'org.webjars:stomp-websocket:2.3.3-1' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' //순수 HTML 사용 시 불필요 implementation 'org.springframework.boot:spring-boot-starter-freemarker' implementation 'org.webjars.bower:boo..
[Spring] 스프링 부트 STOMP 채팅 + 채팅방 구현 Ver.12023-10-27 1. 주요 빌드 정보 implementation 'org.springframework.boot:spring-boot-starter-websocket' implementation 'org.webjars:sockjs-client:1.1.2' implementation 'org.webjars:stomp-websocket:2.3.3-1' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' //순수 HTML 사용 시 불필요 implementation 'org.springframework.boot:spring-boot-starter-freemarker' implementation 'org.webjars.bower:boo..
2023.10.27 -
2023-08-07 1. 오류 SpringBoot의 별다른 설정없이 최초 실행하면 아래와 같은 오류가 발생하는 경우가 있다. 이 오류는 Spring Boot 애플리케이션이 데이터베이스 연결 구성을 찾을 수 없을 때 발생한다. 기본적으로 Spring Boot는 데이터베이스 연결 설정을 기대하며, 이에 대한 구성이 없을 경우 해당 오류가 발생한다. *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be conf..
[Spring] boot DataSource미사용 처리 하는 방법2023-08-07 1. 오류 SpringBoot의 별다른 설정없이 최초 실행하면 아래와 같은 오류가 발생하는 경우가 있다. 이 오류는 Spring Boot 애플리케이션이 데이터베이스 연결 구성을 찾을 수 없을 때 발생한다. 기본적으로 Spring Boot는 데이터베이스 연결 설정을 기대하며, 이에 대한 구성이 없을 경우 해당 오류가 발생한다. *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be conf..
2023.08.07 -
2023-06-10 1. AUTO 기본값이며, 데이터베이스에 맞는 자동 생성 전략을 사용합니다. 주로 MySQL의 AUTO_INCREMENT, Oracle의 SEQUENCE 등과 같이 데이터베이스의 기능을 활용하여 기본 키를 생성합니다.데이터베이스마다 지원하는 자동 생성 전략이 다를 수 있습니다. 2.IDENTITY 데이터베이스의 IDENTITY 컬럼을 사용하여 기본 키를 생성합니다. 주로 MySQL, SQL Server, PostgreSQL 등에서 지원됩니다. 데이터베이스가 기본 키를 자동으로 생성하는 경우에 사용됩니다. 3.SEQUENCE 데이터베이스의 시퀀스를 사용하여 기본 키를 생성합니다. 주로 Oracle, PostgreSQL 등에서 지원됩니다. 시퀀스는 일련번호를 생성하는 객체로, 각각의 값이..
[Spring] @GeneratedValue(strategy = GenerationType."타입") 알아보기.2023-06-10 1. AUTO 기본값이며, 데이터베이스에 맞는 자동 생성 전략을 사용합니다. 주로 MySQL의 AUTO_INCREMENT, Oracle의 SEQUENCE 등과 같이 데이터베이스의 기능을 활용하여 기본 키를 생성합니다.데이터베이스마다 지원하는 자동 생성 전략이 다를 수 있습니다. 2.IDENTITY 데이터베이스의 IDENTITY 컬럼을 사용하여 기본 키를 생성합니다. 주로 MySQL, SQL Server, PostgreSQL 등에서 지원됩니다. 데이터베이스가 기본 키를 자동으로 생성하는 경우에 사용됩니다. 3.SEQUENCE 데이터베이스의 시퀀스를 사용하여 기본 키를 생성합니다. 주로 Oracle, PostgreSQL 등에서 지원됩니다. 시퀀스는 일련번호를 생성하는 객체로, 각각의 값이..
2023.06.10 -
2023-05-07 1. 이슈 토이 프로젝트에서 AOP 적용 중 Caused by: java.lang.IllegalArgumentException: Cannot subclass final class . . . 와 같은 에러가 발생했다. 기존에 java 클래스 파일에서는 문제가 없으나 Kotiln 클래스 파일은 모두 에러가 발생했다. 해당 에러는 표시된 것과 같이 Final Class의 경우 AOP가 CGLIB(Code Generator Library)를 이용해 런타임에 동적으로 자바 클래스에 따른 프록시를 생성해주지 못하기 때문이다. 즉 Kotiln 클래스 파일의 경우 default로 final 키워드가 선언되기 때문에, 동적 생성이 불가해서 생기는 이슈인 것으로 확인 되었다. 그렇다면 아래와 같이 지금..
[Spring] Kotiln + Spring 에서 AOP 적용 시 Caused by: java.lang.IllegalArgumentException: Cannot subclass final class 이슈 해결2023-05-07 1. 이슈 토이 프로젝트에서 AOP 적용 중 Caused by: java.lang.IllegalArgumentException: Cannot subclass final class . . . 와 같은 에러가 발생했다. 기존에 java 클래스 파일에서는 문제가 없으나 Kotiln 클래스 파일은 모두 에러가 발생했다. 해당 에러는 표시된 것과 같이 Final Class의 경우 AOP가 CGLIB(Code Generator Library)를 이용해 런타임에 동적으로 자바 클래스에 따른 프록시를 생성해주지 못하기 때문이다. 즉 Kotiln 클래스 파일의 경우 default로 final 키워드가 선언되기 때문에, 동적 생성이 불가해서 생기는 이슈인 것으로 확인 되었다. 그렇다면 아래와 같이 지금..
2023.05.07 -
2023-04-17 1. 방법 JUnit은 독립된 환경에서의 테스트를 지원하기 때문에 테스트의 순서가 보장되지 않는다. 때문에 동일한 객체 참조가 있을 경우에는 테스트 케이스들의 순서를 보장해주어야 하는 경우가 있는데, 아래의 예제를 보자. import org.junit.FixMethodOrder; import org.junit.Test; public class TestCase1 { static int number1 = 0; @Test public void a1_test(){ number1 += 1; System.out.println("test1 =================================" + number1); } @Test public void a2_test(){ number1 += ..
[Spring] JUnit4 에서 테스트 순서 지정하는 방법2023-04-17 1. 방법 JUnit은 독립된 환경에서의 테스트를 지원하기 때문에 테스트의 순서가 보장되지 않는다. 때문에 동일한 객체 참조가 있을 경우에는 테스트 케이스들의 순서를 보장해주어야 하는 경우가 있는데, 아래의 예제를 보자. import org.junit.FixMethodOrder; import org.junit.Test; public class TestCase1 { static int number1 = 0; @Test public void a1_test(){ number1 += 1; System.out.println("test1 =================================" + number1); } @Test public void a2_test(){ number1 += ..
2023.04.17 -
2022-11-14 1. 방법 최초 실행하고 싶은 메서드를 우선적으로 만든 후 아래와 같이 코드를 작성한다. import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Component; import lombok.RequiredArgsConstructor; @Component @RequiredArgsConstructor public class ServiceInit implements InitializingBean{ private final ServiceInitTest serviceInitTest; //자신이 사용하고자 하는 클래스를 작성 @Override public void afterPro..
[Spring] 스프링 부트 최초 실행 init 메소드 생성 방법2022-11-14 1. 방법 최초 실행하고 싶은 메서드를 우선적으로 만든 후 아래와 같이 코드를 작성한다. import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Component; import lombok.RequiredArgsConstructor; @Component @RequiredArgsConstructor public class ServiceInit implements InitializingBean{ private final ServiceInitTest serviceInitTest; //자신이 사용하고자 하는 클래스를 작성 @Override public void afterPro..
2022.11.14 -
2022-10-28 1. 방법 test.properties 파일 내용 test=test1;test2;test3 properties 파일의 value에 구분하고 싶은 문자열을 두고 ; 를 구분 기호로 사용하였다. @Configuration 파일 내용 @Configuration @PropertySources({ @PropertySource(name = "app", value = "classpath:config/test.properties", encoding = "UTF-8") }) @Getter public class PropertiesConfig implements EnvironmentAware { @Override public void setEnvironment(Environment env) { } //..
[Spring] Properties 파일 배열 형태로 저장 및 불러오기2022-10-28 1. 방법 test.properties 파일 내용 test=test1;test2;test3 properties 파일의 value에 구분하고 싶은 문자열을 두고 ; 를 구분 기호로 사용하였다. @Configuration 파일 내용 @Configuration @PropertySources({ @PropertySource(name = "app", value = "classpath:config/test.properties", encoding = "UTF-8") }) @Getter public class PropertiesConfig implements EnvironmentAware { @Override public void setEnvironment(Environment env) { } //..
2022.10.28 -
2022-08-09 @Bean과 @Component는 두 개다 스피링 IOC의 객체를 생성하는 기능을 한다. 이 둘의 차이점을 알아보자. 1. @Bean vs @Component 우선 @Bean 은 @Configuration와 세트로 사용된다. @Configuration은 기존의 config (XML에서 작성하던) 형식의 파일들을 java.class 형태로 작성할 수 있도록 도와주는 어노테이션이다. @Configuration 안에는 IOC에 들어간 bean이 필요한데, 이러한 객체를 생성하는 메서드에게 @Bean 어노테이션을 적어준다. 예로는 아래와 같이 DB 접속 정보가 들어간 config 파일에 사용한다. @Configuration public class DatasourceConfig { @Bean ..
[Spring] @Bean 과 @Component 의 차이를 알아보자.2022-08-09 @Bean과 @Component는 두 개다 스피링 IOC의 객체를 생성하는 기능을 한다. 이 둘의 차이점을 알아보자. 1. @Bean vs @Component 우선 @Bean 은 @Configuration와 세트로 사용된다. @Configuration은 기존의 config (XML에서 작성하던) 형식의 파일들을 java.class 형태로 작성할 수 있도록 도와주는 어노테이션이다. @Configuration 안에는 IOC에 들어간 bean이 필요한데, 이러한 객체를 생성하는 메서드에게 @Bean 어노테이션을 적어준다. 예로는 아래와 같이 DB 접속 정보가 들어간 config 파일에 사용한다. @Configuration public class DatasourceConfig { @Bean ..
2022.08.09 -
2022-06-10 정적이 파일 properties 에는 주로 config(설정 관련 값)들이 들어 있다. 이들을 하나의 class화 시켜 getter로 사용하는 방법을 알아보자. 1. test.properties TEST_KEY=test123 우선 자신의 properties의 파일의 정확한 경로와 가져와야 하는 키/값을 알고 있어야 한다. 2. PropertiesConfig import org.springframework.beans.factory.annotation.Value; import org.springframework.context.EnvironmentAware; import org.springframework.context.annotation.Configuration; import org.sp..
[Spring] .properties 파일 getter로 불러오는[읽는] 방법2022-06-10 정적이 파일 properties 에는 주로 config(설정 관련 값)들이 들어 있다. 이들을 하나의 class화 시켜 getter로 사용하는 방법을 알아보자. 1. test.properties TEST_KEY=test123 우선 자신의 properties의 파일의 정확한 경로와 가져와야 하는 키/값을 알고 있어야 한다. 2. PropertiesConfig import org.springframework.beans.factory.annotation.Value; import org.springframework.context.EnvironmentAware; import org.springframework.context.annotation.Configuration; import org.sp..
2022.06.10 -
2022-06-08 자신이 서비스하는 웹 애플리케이션에서 쓸데없이 로봇들이 크롤링하는 것들을 막을 수 있는 방법이 있다. robots.txt를 사용하는 건데 이를 spring에서는 어떻게 적용하는지 알아보자. - 방법 사실 방법은 매우 간단하다. /** * 봇 크롤링 막기 */ @RequestMapping(value = "/robots.txt") @ResponseBody public void robotsBlock(HttpServletRequest request, HttpServletResponse response) { try { response.getWriter().write("User-agent: *\nDisallow: /\n"); } catch (IOException e) { log.info("exc..
[Spring] 스프링에서 robots.txt 적용하는 방법2022-06-08 자신이 서비스하는 웹 애플리케이션에서 쓸데없이 로봇들이 크롤링하는 것들을 막을 수 있는 방법이 있다. robots.txt를 사용하는 건데 이를 spring에서는 어떻게 적용하는지 알아보자. - 방법 사실 방법은 매우 간단하다. /** * 봇 크롤링 막기 */ @RequestMapping(value = "/robots.txt") @ResponseBody public void robotsBlock(HttpServletRequest request, HttpServletResponse response) { try { response.getWriter().write("User-agent: *\nDisallow: /\n"); } catch (IOException e) { log.info("exc..
2022.06.08 -
2022-05-06 기존에 @RequestBody 어노테이션을 사용하다가, content-type이 text/plain 형식의 json 데이터를 처리해야 하는데, [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported] 같은 오류가 발생하였으며, 이를 해결하는 방법을 찾아 공유하고자 한다. 방법은 아래와 같다. - 코드 @RequestMapping(value="/") public void test(HttpServletRequest request){ //body에 있는 제이슨을 받은 객체 String bodyJson = ""; StringBuilder str..
[Spring] HttpServletRequest 로 Body 내용 가져오기[json]2022-05-06 기존에 @RequestBody 어노테이션을 사용하다가, content-type이 text/plain 형식의 json 데이터를 처리해야 하는데, [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported] 같은 오류가 발생하였으며, 이를 해결하는 방법을 찾아 공유하고자 한다. 방법은 아래와 같다. - 코드 @RequestMapping(value="/") public void test(HttpServletRequest request){ //body에 있는 제이슨을 받은 객체 String bodyJson = ""; StringBuilder str..
2022.05.06 -
2022-02-18 작업 중 java.lang.OutOfMemoryError: Java heap space 오류가 뜨는 경우가 있다. 이는 힙 영역에서의 더 이상의 공간이 없어 발생하는 문제점으로써 현재의 힙 메모리 영역을 증가시켜야 한다. 오늘은 SpringBoot에서의 힙 메모리 공간을 늘리는 방법을 알아보자. -방법 SpringBoot는 내장 톰캣을 다루기 때문에 Server에서의 tomcat의 heap 메모리가 아닌 각 프로젝트별 heap 메모리를 수정하는 것이 권장된다. 아래를 보자. 이클립스 상단에 메뉴중 Run > Debug Configurations라는 메뉴가 보일 것이다. 해당 항목을 클릭하면 아래와 같은 팝업창이 나타난다. 팝업창 좌측 목차에 Spring Boot App이라는 항목이 존..
[Spring] SpringBoot 힙 메모리 증가시키는 방법/ (OutOfMemoryError)2022-02-18 작업 중 java.lang.OutOfMemoryError: Java heap space 오류가 뜨는 경우가 있다. 이는 힙 영역에서의 더 이상의 공간이 없어 발생하는 문제점으로써 현재의 힙 메모리 영역을 증가시켜야 한다. 오늘은 SpringBoot에서의 힙 메모리 공간을 늘리는 방법을 알아보자. -방법 SpringBoot는 내장 톰캣을 다루기 때문에 Server에서의 tomcat의 heap 메모리가 아닌 각 프로젝트별 heap 메모리를 수정하는 것이 권장된다. 아래를 보자. 이클립스 상단에 메뉴중 Run > Debug Configurations라는 메뉴가 보일 것이다. 해당 항목을 클릭하면 아래와 같은 팝업창이 나타난다. 팝업창 좌측 목차에 Spring Boot App이라는 항목이 존..
2022.02.18 -
2021-11-28 실시간으로 처리해야 하는 요청이 있는 반면에 정해진 시간에 처리해야 하는 작업이 있을 수 있다. 예를 들자면 백업 작업, 사용자에게 특정 시간에 메일을 보내야 할 경우가 그 예가 될 수 있다. 오늘은 특정 시간에 동작하도록 설정할 수 있도록 해주는 @Scheduled에 대하여 알아보자. - 예제 @Scheduled(cron="10 30 12 * * *") public void sendMail() { //특정 시간에 매일을 보내는 메소드 System.out.println("메일을 발송합니다.") } 위의 코드를 보자. 스케줄러를 설정하고 싶은 메소드에 @Scheduled 어노테이션을 붙여주면 해당 메서드는 @Scheduled에 지정해준 시간에 따라 동작하게 된다. cron은 유닉스 계열..
[Spring] @Scheduled 어노테이션을 통한 스케줄러 구현 cron2021-11-28 실시간으로 처리해야 하는 요청이 있는 반면에 정해진 시간에 처리해야 하는 작업이 있을 수 있다. 예를 들자면 백업 작업, 사용자에게 특정 시간에 메일을 보내야 할 경우가 그 예가 될 수 있다. 오늘은 특정 시간에 동작하도록 설정할 수 있도록 해주는 @Scheduled에 대하여 알아보자. - 예제 @Scheduled(cron="10 30 12 * * *") public void sendMail() { //특정 시간에 매일을 보내는 메소드 System.out.println("메일을 발송합니다.") } 위의 코드를 보자. 스케줄러를 설정하고 싶은 메소드에 @Scheduled 어노테이션을 붙여주면 해당 메서드는 @Scheduled에 지정해준 시간에 따라 동작하게 된다. cron은 유닉스 계열..
2021.11.28 -
2021-11-13 JWT 형식의 데이터를 주고받으면 따로 DB의 저장하지 않아도 해당 토큰의 값만 가지고 데이터 처리를 할 수 있다는 장점이 있다. 다만 base64로 인코딩 되어 있어 누구나 해당 토큰 정보를 확인할 수 있는데, 이러한 단점을 보안하기 위해서는 내부의 데이터는 따로 암호화 작업을 거쳐서 전달하는 것이 바람직하다. 바로 사용한 라이브러리와 예제 코드를 보자. - 라이브러리(build.gradle) // https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt implementation group: 'io.jsonwebtoken', name: 'jjwt', version: '0.9.1' - 예제 import java.io.UnsupportedEn..
[Spring] JWT 토큰 생성과 검증하는 코드 빠르게 알아보기2021-11-13 JWT 형식의 데이터를 주고받으면 따로 DB의 저장하지 않아도 해당 토큰의 값만 가지고 데이터 처리를 할 수 있다는 장점이 있다. 다만 base64로 인코딩 되어 있어 누구나 해당 토큰 정보를 확인할 수 있는데, 이러한 단점을 보안하기 위해서는 내부의 데이터는 따로 암호화 작업을 거쳐서 전달하는 것이 바람직하다. 바로 사용한 라이브러리와 예제 코드를 보자. - 라이브러리(build.gradle) // https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt implementation group: 'io.jsonwebtoken', name: 'jjwt', version: '0.9.1' - 예제 import java.io.UnsupportedEn..
2021.11.13 -
2021-10-26 기존에 @Controller라는 어노테이션은 이미 MVC 구조의 프로젝트를 다루면서 많이 익숙해졌을 것이라고 생각한다. @Controller 경우 자신에게 맵핑된 view를 찾아가는 것이 주요 목표이다. 하지만 view이외의 JSON과 같은 데이터 형식을 전달하기 위해서 @ResponseBody와 같은 어노테이션과 같이 사용되는 경우도 많은데, 이러한 두 가지 기능을 하나의 어노테이션으로 사용하고 조금 더 RestFul API 적합한 개발을 위해 나온 어노테이션이 바로 @Restcontroller이다. 사용방법은 간단하며, 아래의 스프링 문서에서 제공하는 예제 코드를 보자. - 예제1 @RestController public class MyController { @RequestMapp..
[Spring] @RestController 빠르게 알아보기.2021-10-26 기존에 @Controller라는 어노테이션은 이미 MVC 구조의 프로젝트를 다루면서 많이 익숙해졌을 것이라고 생각한다. @Controller 경우 자신에게 맵핑된 view를 찾아가는 것이 주요 목표이다. 하지만 view이외의 JSON과 같은 데이터 형식을 전달하기 위해서 @ResponseBody와 같은 어노테이션과 같이 사용되는 경우도 많은데, 이러한 두 가지 기능을 하나의 어노테이션으로 사용하고 조금 더 RestFul API 적합한 개발을 위해 나온 어노테이션이 바로 @Restcontroller이다. 사용방법은 간단하며, 아래의 스프링 문서에서 제공하는 예제 코드를 보자. - 예제1 @RestController public class MyController { @RequestMapp..
2021.10.26