본문 바로가기

Back End/Spring

(6)
[Spring] 서비스 시작 시 특정 로직 수행 - 클래스를 Spring Bean으로 등록하고, 해당 Bean의 생성자로 시작 시 수행하고 싶은 로직을 넣으면 된다.
[Spring] java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value (쿠키 에러) 톰캣 서블릿 엔진에서 쿠키에 공백을 넣으려고 하면 제목과 같은 Exception이 발생한다. response 쿠키에 값을 넣을 땐 꼭 공백을 제거하자. 사실 쿠키를 넣을 땐 URI 인코딩 등 인코딩을 해서 넣도록 하자.
[Spring] 자바 객체를 json String으로 변환, json String을 다시 객체로 변환 (net.sf.json) ■ 목표 - Spring 안에서 객체를 Json String으로 변환. - 변환된 Json String을 다시 객체로 변환. - 객체는 List와 다른 객체, 인터페이스로 이루어진 복잡한 객체이다. ■ 예제 아래의 간단한 클래스들을 가지고 테스트. Group 클래스의 객체를 생성 후 json String으로 변환, 다시 Group객체로 변환한다. Group은 User인터페이스를 멤버로 가지고 있다. public class Group { private User master; private List userList; //json변환 시 사용할 클래스맵 >> userList의 클래스가 SimpleUser임을 알려준다. public static Map getClassMap() { Map classMap = ne..
[Spring] @Transactional 이 동작하지 않을 때 ■ 개요 Spring 에선 @Transactional 이라는 아주 놀라운 어노테이션을 제공한다. 트랜잭션을 쉽고 간편하게 사용할 수 있도록 추상화해놓은 어노테이션이다. 함수 머리위에 붙이기만 하면 내부적으로 트랜잭션 처리를 해 준다! --> 라고 생각했지만 @Transcational이 구현되고 동작하는 방식을 모른 채로 무작정 사용하면 원하는대로 동작하지 않는 경우가 많다. 이 글은 동작 방식을 설명하기 위한 것은 아니고,, 내가 원하는대로 트랜잭션이 걸리지 않을 경우 검토할만한 것들을 정리해 보았다. Spring에서의 @Transactional의 동작 방식은 아래 글을 참고하면 자세히 알 수 있다. (본문과도 연관됨) Spring AOP에서 Proxy란 ? (velog.io) Spring AOP에서 P..
[Spring] Controller 에서 HTML텍스트를 HTML페이지로 리턴하기. ■ 목표 - Spring 컨트롤러에서 HTML텍스트를 브라우저에서 바로 렌더링되도록 리턴한다. (보통 jsp나 html파일 경로를 리턴하는데 HTML문서의 본문 텍스트를 리턴하는 방법이다.) 이런 방법을 쓸일이 없을것만 같은데 일하다보니 생긴다... 샘플로 사용할 HTML은 아래와 같다. example 2-1 html example hello world hello world hello world hello world hello world hello world ■ 소스코드 방법은 간단하다. Controller에서 response를 인자로 받아, 해당 response에 직접 HTML 본문을 출력하면 된다. 단 보안적인 측면은 무시하고 테스트로 개발하였다. 보안이 필요한 페이지라면 헤더 등을 사용해 인증 관련..
[Spring] request 가 동시에 많이 들어오는 상황에 대한 고찰(파일 업로드) ■ 상황 프로젝트 진행 도중 아래와 같은 개발을 할 일이 생기게 되었다. Apache & Tomcat, Spring기반 개발 환경이다. 포탈과 웹 오피스 엔진간의 연동이다. - 다운로드와 업로드는 HTTP통신을 통해 이루어지며, 업로드 시 multipart로 파일을 전송한다. - 포탈에선 업로드시 파일을 다운로드 받아, 원래 경로에 있는 파일에 덮어쓴다. - 유저 수는 최대 10000명이고, 오피스에서 한 파일을 동시에 수정 가능한 인원은 최대 200명이다. ■ 고민 다운로드, 업로드 API를 개발하는 도중 고민이 생기게 되었다. 웹오피스에서 동시다발적으로 여러 사용자가 파일을 수정하게 되면, 업로드 API가 동시다발적으로 요청되지 않을까? 라는 고민에서 시작했다. 1. 파일 업로드로 처리되는 속도보다 ..