Spring Framework/Spring 입문 - 개념 및 핵심: 33개의 글
| 스프링 ResourceLoader ResourceLoader는 리소스를 읽어오는 기능을 제공하는 인터페이스다. ApplicationContext 인터페이스는 이 ResourceLoader 인터페이스를 상속받은 상태이므로 ApplicationContext를 통해서도 ResourceLoader가 제공하는 메서드를 사용하는 것이 가능하다. @Component public class AppRunner implements ApplicationRunner { @Autowired ResourceLoader resourceLoader; @Override public void run(ApplicationArguments args) throws Exception { Resource resource = resourceL..
| 스프링 ApplicationEventPublisher 스프링 ApplicationEventPublisher는 스프링에서 이벤트 프로그래밍에 필요한 인터페이스를 제공한다. ApplicationContext 인터페이스에 이미 상속되어있어서 ApplicationContext의 구현체에서도 접근이 가능하다. @Component public class AppRunner implements ApplicationRunner { @Autowired ApplicationContext applicationContext; // ApplicationEventPublisher를 사용해도 된다. @Override public void run(ApplicationArguments args) throws Exception { a..
| 스프링 메세지소스(Spring MessageSource) 스프링 메세지 소스(Spring MeesageSource)는 국제화(i18n)을 제공하는 인터페이스다. 메세지 설정 파일을 모아놓고 각 국가마다 로컬라이징을 함으로서 쉽게 각 지역에 맞춘 메세지를 제공할 수 있다. | 메세지 설정 파일 셋업하기 메세지 설정 파일을 셋업하기 위해서는 .properties 확장자가 붙은 프로퍼티 파일에 [파일이름]_[언어]_[국가].properties 형식으로 메세지 파일을 추가해야 한다. 다음은 그 예시다. message.properties : 기본 메시지. 시스템의 언어 및 지역에 맞는 프로퍼티 파일이 존재하지 않을 경우에 사용. message_en.properties : 영어 메시지. message_ko.pr..
| 스프링 프로퍼티(Spring Property)를 통한 환경 설정 스프링에서는 프로퍼티를 통해 다양한 방법으로 설정값을 정의할 수 있다. 이 설정값은 Environment 객체를 통해 가져올 수 있으며, 가져올 수 있는 값은 프로퍼티 소스 설정 및 프로퍼티 값이다. 프로퍼티에는 우선순위가 있으므로 같은 이름의 프로퍼티가 있을 경우 가장 우선순위가 높은 프로터티 설정값으로 사용하게 된다. 다음은 프로퍼티 우선순위에 대한 내용이다. (위에서 아래로 우선순위가 낮아짐) 1. ServletConfig 매개변수 2. ServletContext 매개변수 3. JNDI (java:comp/env/) 4. JVM 시스템 프로퍼티 (-Dkey="value") 5. JVM 시스템 환경 변수 6. 사용자 프로퍼티 설정파일..
| 스프링 환경설정(Spring Environment Configuration) 스프링에서는 프로필(Profile)을 통해 런타임 환경을 설정할 수 있는 기능을 제공한다. 이 기능을 이용하여 테스트환경에서 여러 테스트를 돌리고 난 다음 프로덕션 환경으로 전환하는 것을 어렵지 않게 할 수 있다. 스프링이 동작할 때 해당 환경(프로필)이 어떤 것인지를 알기 위해서는 ApplicationContext 인터페이스의 구현 객체에서 getEnvironment 매서드를 통해 Environment 객체를 뽑아낸 뒤 확인이 가능하다. @Component public class AppRunner implements ApplicationRunner { @Autowired ApplicationContext ctx; @Auto..
| 스프링 빈 스코프 설정 (Spring Bean Scope Configuration) 스프링 빈(Spring Bean)은 생존주기를 가지고 있으며 또한 스프링 컨테이너에서 관리하는 스프링 빈이 어떤 범위로 관리될 것인지를 설정할 수 있다. 관리 형태는 싱글턴 스코프 혹은 프로토타입 스코프 둘 중 하나다. 대부분의 경우 싱글턴 형태로 빈을 관리하게 되지만 Request, Session, WebSocket 같은 하나하나의 객체를 생성해야만 할 때는 프로토타입 스코프를 쓴다. 어노테이션을 통해서 스프링 빈의 범위를 설정하는 방법은 다음과 같다. @Component @Scope("singleton") public class Single { } @Component @Scope("prototype") public..
| 스프링 리다이렉트(Spring Redirect) 리다이렉트(Redirect)는 사용자가 웹 서버의 자원을 요청했을 때 현재 URL 자원(HTML이나 Img 등)을 반환하는 것이 아닌 다른 자원을 받도록 다른 URL로 유도하는 것을 말한다. 아래는 /removeForm 으로 들어온 사용자 요청으로 사용자 정보를 삭제하는 일을 하는 컨트롤러 메서드다. 만약 정상적인 경로(회원인증이 된 후의 사이트)로 /removeForm이 들어올 경우 해당 코드를 실행하면 되지만 그렇지 않을 경우(회원 인증도 안 된 상태)에는 이 코드를 실행하지 않거나 다른 곳으로 리다이렉트해야한다 . 이 때, ModelAndView 객체에 setViewName에 리다이렉트 URL을 넣어 해당 URL로 사용자 페이지가 유도되도록 할 수..
| 세션과 쿠키(Session, Cookie) 웹 서비스는 HTTP 프로토콜을 기반으로 사용자와 통신한다. HTTP 프로토콜은 클라이언트와 서버와의 관계를 유지하지 않는 특징인 Stateless 기반인 프로토콜이다. 따라서 만약 쇼핑몰같은 웹서비스를 이용할 때 만약 HTTP 프로토콜만으로 통신한다면 페이지를 이동할 때마다 계속해서 서버와 연결해야하는 불편함이 생긴다. 또한 사용자의 요청마다 서버와 매번 새로운 연결이 생기기 때문에 로그인 상태유지, 장바구니 등의 기능을 구현하는 것이 매우 까다로워진다. 이런 Stateless 상태를 해결하는 두 가지 방식이 있는데 세션(Session)과 쿠키(Cookie)다. 두 방식 모두 사용자와 서버의 연결 상태를 유지해주는 방법으로, 세션은 서버에서 연결 정보를 관..
| @ModelAttribute @ModelAttribute는 스프링에서 JSP파일에 반환되는 Model 객체에 속성값을 주입하거나 바인딩할 때 사용되는 어노테이션이다. 컨트롤러(Controller) 객체에서 2가지 방법으로 사용된다. @ModelAttribute("serverTime") public String getServerTime(Locale locale){ Date date = new Date(); DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG,locale); return dateFormat.format(date); } 먼저 메서드에 @ModelAttribute를 붙이는 경우다. 이 때 ..
| 스프링 MVC 커맨드 객체(Command Object) 스프링에서 HttpServletRequest를 통해 HTTP 전송 정보를 얻는 방법은 다음과 같다. @RequestMapping(value = "/memLogin", method = RequestMethod.POST) public String memLogin(Model model,HttpServletRequest request){ String memId=request.getParameter("memId"); String memPw=request.getParameter("memPw"); } 하지만 이 방법은 속성값을 끄집어내기 위한 boiler-plate 코드가 생길 수 밖에 없는 단점이 있다. 따라서 스프링에서는 @RequestParam 어노테이..