스프링: 148개의 글

| 스프링 프로퍼티(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..

| 세션과 쿠키(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 어노테이..

| 스프링 서비스 & DAO 객체 구현(Spring Service & DAO Implementation) 기본적인 서비스와 DAO 객체를 구현한 스프링 프로젝트를 구축해보고자 한다. 아파치 톰캣(Apache Tomcat) 상에서 실행되며 이클립스(Eclipse) IDE를 사용하여 빠르게 프로젝트를 실행해 보거나 디버깅할 수 있다. | 프로젝트 구조(Project Structure) 이클립스 상에서 Project Explorer에 나타낸 프로젝트 구조는 다음과 같다. 기본적인 서비스와 DAO 객체를 구현한 예제이다. | 스프링 UTF-8 인코딩 필터 설정(Spring UTF-8 Encoding Filter Configuration) 스프링에서는 UTF-8 인코딩을 따로 설정해주지 않으면 한글이 깨지는 현상..

| 톰캣(Tomcat) 설치 및 연동 아파치 톰캣(Apahce Tomcat)은 Apache에서 제공하는 오픈소스 WAS 서버다. 톰캣은 아래 사이트에서 다운로드 할 수 있다. ▶http://tomcat.apache.org/ 톰캣 8.0 다운로드 페이지에 들어간다. 여기서 8.5 버전을 다운로드한다. zip파일을 다운로드 받은 후 압축을 푼다. 설치경로는 사용자 마음대로지만 여기서는 D:\tomcat으로 할 것이다. Eclipse의 Window => Show View => Server 를 클릭하면 아래와 같은 창이 하나 생긴다. 파란색 하이퍼링크를 클릭한다. 8.5 버전을 선택한다. Browse를 클릭하여 톰캣이 설치된 디렉터리를 선택한다. 여기서는 D:\tomcat이다. 아래와 같이 서버 정보가 생성되면..
| 웹 어플리케이션 설계 모델(Web Application Architecture) 웹 어플리케이션은 크게 MVC 패턴을 따르게 되며 Model, View, Controller로 나뉘게 된다. Model : DB와 상호작용하며 비즈니스 로직을 처리하는 모듈 View : Client에게 보여지는 결과화면을 반환하는 모듈Controller : Client 요청이 들어왔을 때 그 입력을 처리하고 어떤 로직을 실행시킬 것인지 제어하는 모듈 웹 프로그래밍을 구축할 때의 설계 모델은 Model1, Model2 크게 2가지가 있다. 두 모델의 큰 차이는 클라이언트의 요청 사항을 모듈화되지 하나의 파일로 처리할 것이냐 각각의 기능을 담당하는 모듈들이 역할을 분담해서 처리할 것이냐로 결정된다. . Model1는 WAS(..
| 어노테이션(Annotation)을 이용한 스프링 설정 스프링에서는 XML 설정을 통해 Bean 객체를 컨테이너 상에서 구현할 수 있지만 Java 파일을 이용해서도 구현할 수 있다. 다음의 XML 설정파일을 Java 설정 파일로 변환하면 다음과 같다. @Configuration public class JavaConfig { @Bean public Gun gun() { return new Gun(); } @Bean public Knife knife() { return new Knife(); } @Bean public Player gunPlayer() { return new Player(gun()); } @Bean public Player gunPlayer2() { return new Player(knif..