Programming/Spring 25

[SpringBoot] No serializer found for class *$*Dto and no properties discovered to create BeanSerializer 에러 원인

Spring Boot RestController 테스트를 하다 다음과 같은 에러가 발생하였다. 해결 : 에러 코드 중 No serializer found for class *$*Dto and no properties discovered to create BeanSerializer 에 대한 부분은 해당 DTO에서 변수를 getter 할 수 없다는 의미이므로 lombok 어노테이션을 추가해주거나 별도의 getter를 생성해주면 된다.

Programming/Spring 2022.07.24

[SpringBoot] @Controller - jsp 페이지 호출 시 에러 (Exiting from "FORWARD" dispatch, status 404) 해결

에러 2022-03-09 21:34:59.981 DEBUG 21940 --- [nio-7068-exec-1] o.s.w.s.v.ContentNegotiatingViewResolver : Selected 'text/html' given [text/html, application/xhtml+xml, image/avif, image/webp, image/apng, application/xml;q=0.9, application/signed-exchange;v=b3;q=0.9, */*;q=0.8] 2022-03-09 21:34:59.981 DEBUG 21940 --- [nio-7068-exec-1] o.s.w.servlet.view.InternalResourceView : View name '/home', mod..

Programming/Spring 2022.03.09

[Spring] jackson-dataformat-xml (@JsonFilter) - Response 데이터 제어

필요성 : Controller Mapping 마다 각각 필요로하는 데이터를 지정해 줄 수 있다. 특정 필드에 @JsonIgnore 를 사용할 경우, 해당 클래스를 사용하는 모든 데이터가 필터링되므로 개별적인 제어를 해주기 위해서는 @JsonFilter를 사용해야 한다. 이전 글 - https://matseventwelve.tistory.com/69 [Spring] jackson-dataformat-xml (@JsonIgnore, @JsonIgnoreProperties) - Response 데이터 제어 필요성 : Rest 데이터를 리턴해줄 때 민감한 정보를 @JsonIgnore 을 통해 제어할 수 있다. 1. @JsonIgnore 테스트 클래스 일반적인 데이터 클래스를 Response 받으면 아래 사진처럼..

Programming/Spring 2022.02.17

[Spring] jackson-dataformat-xml (@JsonIgnore, @JsonIgnoreProperties) - Response 데이터 제어

필요성 : Rest 데이터를 리턴해줄 때 민감한 정보를 @JsonIgnore 을 통해 제어할 수 있다. 1. @JsonIgnore 테스트 클래스 일반적인 데이터 클래스를 Response 받으면 아래 사진처럼 password와 ssn 정보가 그대로 출력된다. 민감한 정보에 해당하는 password와 ssn에 @JsonIgnore 어노테이션을 입력해준 후 다시 테스트하면 어노테이션 처리된 필드는 출력되지 않는다. 2. @JsonIgnoreProperties(value = { "필드명1", ... , "필드명N"}) @JsonIgnore 와 마찬가지로 필드의 리턴 여부를 제어할 수 있다. +) 해당 클래스를 상속받았을 경우, 마찬가지로 Ignore 처리된 필드는 출력되지 않는다!

Programming/Spring 2022.02.17

[Spring] jackson-dataformat-xml (DataType = XML 리턴 )

필요성 : Spring Boot Restful 서비스를 만들 때, XML 데이터 타입으로 데이터를 반환할 때 사용되는 dependency pom.xml 에 해당 dependency를 저장하고, 서버 재구동. com.fasterxml.jackson.dataformat jackson-dataformat-xml 2.10.2 URL 헤더에 Key : Accept Value : application/xml 을 입력하면 반환 값을 xml 타입으로 받을 수 있다. (json은 application/json, default)

Programming/Spring 2022.02.17

[Spring] @Valid 어노테이션이 작동이 안 한다면?

이유 : spring boot 2.3 version 이상부터는 spring-boot-starter-web 의존성 내부에 있던 validation이 분리됬다.. 때문에 사용하는 spring boot version이 2.3 이상이라면 validation 의존성을 따로 추가해야 한다. org.springframework.boot spring-boot-starter-validation 해당 테스트를 위해 @Valid 가 포함되어 있는 데이터에 고의적으로 에러를 발생시켜 보았다. @Size 가 최소 2인 변수 name에 길이 1의 데이터를 입력. 400에러로 정상적인 Valid 어노테이션이 동작했음을 알 수 있었다. 참고) 해당 문제를 검색을 하다가 Hibernate Validator도 javax.validati..

Programming/Spring 2022.02.15

[Spring] 이클립스에서 Environment값 설정

스프링부트 프로젝트를 진행하다보면 application.properties에 보안이 필요한 정보들을 입력해야할 때가 있다. 한 프로젝트를 진행하면서 application.properties에 암호화된 jdbc 값을 입력할 일이 있었는데, properties 우선순위 상 application.properties 를 읽어오는 순위는 상대적으로 늦어서 bean 에러가 발생한 경우가 있었다. 이런 경우 이클립스 환경에서 jdbc를 굳이 프로퍼티 정보에 남기지 않고 실행시키는 방법을 소개하고자 한다. (리눅스 서버 환경에서는 서버상에 별도로 env를 설정해야한다.) Run - Run Configurations.. 탭에 들어가서 [ Spring Boot App ] 탭에서 실행시키고자 하는 프로젝트를 클릭한다. En..

Programming/Spring 2021.12.02

[Spring] SpringBoot 프로퍼티(properties) 우선순위

1. 유저 홈 디렉토리에 있는 spring-boot-dev-tools.properties 2. 테스트에 있는 @TestPropertySource 3. @SpringBootTest 애노테이션의 properties 애트리뷰트 4. 커맨드 라인 아규먼트 5. SPRING_APPLICATION_JSON (환경 변수 또는 시스템 프로퍼티) 에 들어있는 프로퍼티 6. ServletConfig 파라미터 7. ServletContext 파라미터 8. java:comp/env JNDI 애트리뷰트 9. System.getProperties() 자바 시스템 프로퍼티 10. OS 환경 변수 11. RandomValuePropertySource 12. JAR 밖에 있는 특정 프로파일용 application properties ..

Programming/Spring 2021.12.02

[Spring] @Bean, @Configuration, @Component 어노테이션 차이

@Bean, @Configuration 개발자가 직접 제어가 불가능한 외부 라이브러리 또는 설정을 위한 클래스를 Bean으로 등록할 때 @Bean 어노테이션을 활용 1개 이상의 @Bean을 제공하는 클래스의 경우 반드시 @Configuration을 명시해 주어야 함 @Component 개발자가 직접 개발한 클래스를 Bean으로 등록하고자 하는 경우 @Component 어노테이션을 활용

Programming/Spring 2021.12.02