Engineering/Spring 11

POST request RestTemplate with MultiValue

POST API body 에 여러 데이터를 보낼때 가끔씩 설정 실수를 해서 정리해본다. 아래와 같은 json 형태의 데이터를 body 로 보내려고 한다.{ "name": "홍길동", "age": 18, "content": "자세한 내용 : "}  @Test void sendToUrlTest() { String url = "http://abc.com/send/mail"; HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); MultiValueMap body = new LinkedMultiValueMap(); ..

Engineering/Spring 2025.01.07

[SpringBoot] ALLOW_COMMENTS 오류

어떤 API 를 실행했는데, 다음과 같이 "Unexpected character ('/' (code 47)): maybe a (non-standard) comment? (not recognized as one since Feature 'ALLOW_COMMENTS' not enabled for parser" 관련 오류가 발생하는 경우가 있다. org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unexpected character ('/' (code 47)): maybe a (non-standard) comment? (not recognized as one since Feature 'ALLOW_COMMEN..

Engineering/Spring 2021.04.09

jar 파일 외부에서 프로퍼티 이용하는 방법(spring)

Spring jar 를 실행할때, config 파일을 jar 외부에서 수정할 수 있도록 하는 방법 src/main/resources 디렉토리에 스프링 콘텍스트 파일인 app-context.xml 에서 app-properties.xml 이라는 프로퍼티(보통 이 파일안에는 DB 연결할때의 서버 IP 나 로그인 ID/패스워드가 있다.) 파일을 읽어서 프로그램 관련 설정을 가지고 올때, jar 로 묶으면 jar 파일에 함께 들어가기 때문에 app-properties.xml 파일을 수정할 수가 없는 상황이 된다. ... 해결 방법을 찾아보니, location 을 locatons 로 바꾸고 list 형태로 설정 파일 위치를 지정하라고 해서 추가해봤는데 팩토리 생성 빈이라 설정 위치를 찾을 수 없다는 에러메시지가 나..

Engineering/Spring 2015.10.12

spring boot 사용 예제

STS 에 언제부터인가 포함되어 있던 spring-boot 를 한번 테스트해보기로 했다. Spring Boot 는 링크에서도 간단히 설명이 나와있지만, 어떤 xml 설정이 필요없고 독립형(stand-alone) 프로그램을 지원하고 웹 컨테이너를 내장해서(embbed) tomcat, jetty 같은 외부 WAS 없이도 웹앱을 실행할 수 있다. "Package Explorer" - "NEW" - "Spring Starter Project" 를 선택하면 프로젝트 이름을 "demo" 로 해서 그룹, artifact, 패키지 이름, 그리고 style 이라고 해서 기본이 되는 모듈(Web, WebSocket, JDB, JPA, AMQP, ...)을 선택할 수 있다. 일단 "Web" 을 선택하면 maven 모듈들이 ..

Engineering/Spring 2014.07.09

XML 기반의 Resource Bundle, PropertyPlaceHolder 사용하기

config 설정을 읽거나 다국어 지원를 위해 프로퍼티 파일 형식으로 처리한다. 이때 value 에 해당하는 부분이 긴 문자열이거나 문단일때는 "\n" 을 붙이는데, 일단 보기에도 어렵고 수정하려면 곤란한 경우가 생긴다. 이럴때 XML 형식으로 프로퍼티를 설정하면 작성한 형식으로 바로 출력이 가능하다. 예제 코드는 http://www.mkyong.com/spring/spring-resource-bundle-with-resourcebundlemessagesource-example/ 에 있는 샘플 코드를 참고해서 환경을 맞추고 편의상 수정했다. 그리고, 메시지 중간에 파라미터 형식으로 문자열을 넘겨서 동적으로 변경하기 위해 MessageFormat 클래스를 사용하는데, {0}, {1} 처럼 순서를 맞춰줘야 ..

Engineering/Spring 2013.12.30

Spring 에서 MailSender 를 이용한 send mail

스프링이 지원하는 JavaMailSenderImpl(org.springframework.mail.javamail.JavaMailSenderImpl) 클래스를 이용하면 메일 보내는 서비스를 간단하게 작성할 수 있다. 사용을 위해서는 com.springsource.javax.mail-1.4.X.jar 가 필요하다. 보통은 스프링 컨택스트 파일에 빈으로 등록을 하지만, 다른 곳에서 메일 설정값을 읽어오는 부분이 있어서 직접 sender 를 구성하는 예제를 작성해 보았다. @Test public void test() throws MessagingException { JavaMailSenderImpl sender = new JavaMailSenderImpl(); sender.setHost("smtp.gmail.c..

Engineering/Spring 2013.12.26

Spring 에서 트랜잭션 관리

스프링은 트랜잭션 처리를 위해 선언적(declarative) 트랜잭션 관리와 프로그램적(programmatic) 트랜잭션 관리 방법을 제공한다. * declarative 트랜잭션 콘택스트 파일에 를 이용하거나 를 사용하는 방법. 둘다 트랜잭션 매니져(transactionManager) 를 스프링 빈으로 등록하지만 는 설정이 또 필요하다. 은 트랜잭션 관리가 필요한 클래스나 메소드에 직접 @Transactional 애너테이션만 추가해주면 설정이 끝난다. 는 여러 옵션이 들어갈 수 있기때문에 사용할 환경에 맞춰서 선택하면 될거 같다. 두 방식다 스프링 AOP 가 동작하기 하지만 애너테이션 방식이 필요한 곳에만 애너테이션을 추가하면 되기 때문에 편해보이긴 한다. * @Transactional 애노테이션 방식 ..

Engineering/Spring 2013.12.11

WEB-INF 디렉토리에 있는 *Context.xml 가져오기

스프링이 생성하는 빈이 아닌 자바 클래스에서 스프링이 관리하는 빈들을 이용해서 객체를 생성해야 하는 일이 있었다. 그런데, context 파일들이 클래스 패스와 다른 곳에 있어서 문제가 생겼다. 보통은 클래스 패스에다가 context 파일들을 넣어서 관리하지만, 따로 context 파일들을 WEB-INF/spring/*.xml 으로 분리를 한 상태이다. 1. WebApplicationContext 를 이용하는 방법 : "servletContext" 가 먼저 있어야 한다는 에러 메시지가 출력된다. 물론 서블릿이 아닌 일반 자바 클래스라서 이 방법은 사용이 불가능. 2. FileSystemXmlApplicaionContext 를 이용하는 방법 : 컨텍스트 파일들의 위치를 절대 경로로 잡아야하기 때문에 이것도..

Engineering/Spring 2013.10.30

sts(spring tool suite) 에 svn 설치

STS(Spring Tool Suite) (STS 3.3.0, eclipse kepler 4.3 기준) 에 svn 클라이언트(subversive)를 설치하는 방법: sts 에서 svn 소스를 반영하려고 플러그인을 설치하고 시도하면 "Selected SVN connector library is not available or cannot be loaded." 이라는 에러메시지가 나와서 여러 경로로 검색해보다가 옛날 이클립스 버전들에 대한 설치 방법들밖에 안 보여서 고생한 기억때문에 기록을 남겨본다. 1. "Help - Eclipse Marketplace" 에서 svn 으로 검색해서 "Subversive - SVN Team Provider" 를 설치한다. 2. "Window - Preference" 에서 "s..

Engineering/Spring 2013.08.20

[Spring] Caused by: java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.getAnnotation 에러 발생

STS 에서 spring 템플릿 "Simple Spring Utility Project" 으로 프로그램 코드를 작성하고 빌드를 하면 다음과 같은 에러를 내는 경우가 있다.Caused by: java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.getAnnotation 에러문 그대로 getAnnotation 이라는 메소드를 찾을 수 없다는 것인데, Spring 인데 왜 없는거지 하면서 다른데서 원인을 찾았었다. app-context.xml 에서 부분을 주석으로 막으면 되지만, DB 트랜잭션 처리가 필요하기 때문에 그렇게 할 수 없었다.그러다 "Maven Dependencies" 를 보니, spring-core-XXX..

Engineering/Spring 2013.06.26