반응형

웹 개발 273

[Spring] @Controller와 @RestController 차이

Spring Web Project 개발 시 반드시 Controller가 필요합니다. 일반적으로 Spring 책으로 공부를 하다 보면 Controller에는 @Controller 애노테이션을 사용하는데요 @Controller 전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다. @Controller가 View를 반환하기 위해서는 ViewResolver가 사용되며, ViewResolver 설정에 맞게 View을 찾아 렌더링 합니다. Spring MVC Container는 아래와 같은 과정을 통해 Client 요청으로부터 View를 반환합니다. Client는 URI 형식으로 웹 서비스에 요청을 보낸다. Mapping 되는 Handler와 그 Type을 찾는..

웹 개발 2021.07.31

spring boot utf8 설정

한국 개발자의 가장 큰 비애는 한글인데요 개발을 하다 보면 한글이 깨지는 경우가 정말 많습니다. 한글이 안깨지게 하기 위해 character를 UTF-8로 설정을 해야 하는데요. SpringBoot에서는 아래와 같이 간단하게 설정 파일(application.properties 또는 application.yml)을 통해 설정할 수 있습니다. 아래는 application.properties 기준입니다. spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force=true

웹 개발 2021.07.25

[JPA] Entity to DTO, ModelMapper

API 통신에서 JPA를 사용할 때 entity를 그대로 return 하면 좋지 않습니다. 그 이유는 다음과 같습니다. entity 변화 시, API도 변경 Database를 관리하다 보면 의외로 생각보다 Database가 변경되는 경우가 많습니다. API 통신에서 entity를 그대로 return 하는 경우에 Database가 변경되면 API도 변경되는 상황이 발생합니다. 그러나 API는 특별한 경우가 아니면 변경되서는 안됩니다. API는 약속이며, 작게는 같은 팀의 직원과 크게는 다른 업체와 API 통신을 하는데, API가 변경되면 관련된 모든 사람이 코드를 수정해야 하는 상황이 발생합니다. 트래픽 증가 요즘 인터넷이 빨라졌다고 하지만, 트래픽은 민감한 문제입니다. 특히, AWS 등의 클라우드 환경에..

웹 개발 2021.07.18

Get Spring Security Principal in JSP EL expression

JSP에서는 java를 사용할 수 있기 때문에 다음과 같이 java 코드를 사용하여 Spring Security Principal을 가져올 수 있습니다. 하지만 jsp에 java 코드를 사용하는건 좋지 않은 방법입니다. 이 때 다음과 같이 사용할 수 있습니다. 1. taglibs 라이브러리를 추가합니다. * maven의 경우 pom.xml에 추가합니다. org.springframework.security spring-security-taglibs 3.1.3.RELEASE 2. JSP 상단에 다음과 같은 코드를 추가합니다. 3. 다음을 추가하여 사용자 개체를 만듭니다. 4. 이제 아래와 같이 사용할 수 있습니다. ${user.userName} [출처] https://stackoverflow.com/ques..

웹 개발 2021.07.11

spring boot properties 암호화 (Jasypt)

Spring boot로 개발을 하다 보면 application.properties나 application.yml 등의 설정 파일을 사용합니다. 이 설정 파일에는 서버 연결 정보, DB 연결 정보 등과 같은 민감한 정보가 있을 수 있습니다. 그래서 실무를 하다보면 민감한 정보는 암호화하지 않게 되면 보안진단 시 문제가 발생합니다. 따라서 민감한 정보는 암호화를 해야 하는데, Spring boot와 연동해서 쉽게 사용할 수 있는 것이 Jasypt 라이브러리(오픈소스) 입니다. 사용방법은 다음과 같습니다. (Spring boot 이외에도 사용 가능하지만, 여기서는 Spring boot에서 사용하는 방법을 기록합니다.) 1. Dependency 추가 1.1 Maven pom.xml에 아래와 같이 추가합니다. c..

웹 개발 2021.07.11

[Eclipse] Spring boot 프로젝트에서 war 파일 만들기

SpringBoot에서 war 파일을 만들기 위해서는 @SpringBootApplication에서 SpringBootServletInitializer를 확장해야 합니다. 그 방법은 다음과 같습니다. pom.xml의 packaging을 war로 변경합니다. war​ pom.xml에 아래 dependency를 추가 org.springframework.boot spring-boot-starter-tomcat provided ​ @SpringBootApplication 애노테이션이 있는 java 파일에 다음과 같이 SpringBootServletInitializer를 추가합니다. import org.springframework.boot.SpringApplication; import org.springframew..

웹 개발 2021.07.04

SpringBoot 에서 hibernate.dialect 에러 발생. (로컬서버 실행 안되는 현상)

Spring Boot에서 프로젝트 실행 시 아래와 같은 에러 메시지 발생하며 실행되지 않는 경우가 있습니다. Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set 이 경우 application.properties에 DB에 맞는 SQLDialect를 설정해주시면 됩니다. 예를 들어 PostgreSQL의 경우 다음과 같습니다. spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect 이렇게 설정하고 다시 실행을 하면 정상적으로 로컬서버가 실행됩니다.

웹 개발 2021.07.04

javax.management.InstanceNotFoundException: org.springframework.boot:type=Admin,name=SpringApplication

1. IntelliJ Run > Edit Configurations choose your project remove the 'Enable launch optimization' and 'Enable JMX agent' checkboxes 2. Eclipse Run > Run Configurations choose "Spring Boot" tab remove the 'Enable JMX' checkbox references https://kimyhcj.tistory.com/364 https://stackoverflow.com/questions/50436108/javax-management-instancenotfoundexception-org-springframework-boottype-admin

웹 개발 2021.06.04

class 파일의 java(jdk) 버전 확인하는 방법

java로 개발을 하다 보면 미처 신경을 못써서 개발환경의 jdk와 운영환경의 jdk가 다른 경우가 있는데, 기본적으로 java에서 하위 호환은 되지만, 상위 호환은 되지 않습니다. 예를 들어 java8로 컴파일된 class는 java 9에서 실행이 되지만, java 7에서는 실행이 되지 않습니다. 이와 같이 더 높은 버전의 java에서 컴파일 된 class 파일을 낮은 버전에서 실행하려고 할 경우 다음과 같은 에러가 발생합니다. - java.lang.UnsupportedClassVersionError - Unsupported major.minor version xx 보통은 내가 컴파일한 java버전을 알고 있을 경우도 있지만 어떤 이유로 class파일이 어떤 버전의 java로 컴파일되었는지 찾아야 할 ..

웹 개발 2021.05.17

Spring Boot java.lang.NoClassDefFoundError: javax/servlet/Filter

Spring boot에서 프로그램을 run 할 때 다음과 같은 메시지가 발생하는 경우가 있습니다. java.lang.NoClassDefFoundError: javax/servlet/Filter 해결방법은 gradle 또는 maven에서 spring-boot-starter-tomcat의 scope를 provided에서 compile로 바꾸면 됩니다. 1. maven 아래와 같이 provided 를 주석처리합니다. org.springframework.boot spring-boot-starter-tomcat 2. gradle providedRuntime("org.springframework.boot:spring-boot-starter-tomcat") 위의 코드를 아래와 같이 변경합니다. compile("org..

웹 개발 2021.05.16
728x90
반응형
loading