Spring Framework/Spring 입문 - 개념 및 핵심: 33개의 글
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/KRVH2/btqTvQjr1jM/pml4X96uKOYbRgw0qQR7d0/img.jpg)
| 스프링 서비스 & 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 인코딩을 따로 설정해주지 않으면 한글이 깨지는 현상..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/bd0sCq/btqTyCdFOF0/XXnenAWXLHusB3GumSALPK/img.png)
| 스프링 MVC 프로젝트 구조 (Spring MVC Project Structure) 스프링 MVC 프로젝트(Spring MVC Project)를 생성할 시 생성되는 구조는 다음과 같다. JAVA 파일 : 자바 파일들이 위치해 있는 디렉터리. 자바로 작성된 Controller, Service, DAO 파일들이 위치해있다. webapp : 웹과 관련된 파일들이 위치해있는 디렉터리. html, css, js, jsp 파일이 위치해있다. 또한 웹 어플리케이션 구동에 필요한 XML 설정파일들이 위치해있다. webapp의 resources : JSP파일을 제외한 html, css, js 파일이 위치해있다. spring 폴더 : 스프링 컨테이너를 생성하기 위한 스프링 설정파일이 위치해있다. views 폴더 : V..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/cBjAdn/btqToxFzxy9/sQUETk3XGLv1yRCNMN1lh0/img.png)
| 톰캣(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..
| 스프링 컨테이너(Spring Container), 빈(Bean) 객체 생명 주기 스프링 컨테이너는 자바에서 GenericXmlApplicationContext 객체를 통해 생성되고 이 객체의 close 매서드를 통해 소멸된다. 빈 객체는 스프링 컨테이너가 만들어지고 난 후 생성되며 컨테이너가 소멸될 때 같이 소멸된다. 소멸된다는 의미는 메모리에서 클리어된다는 의미다.public class Main { public static void main(String[] args) { String xmlConfigPath = "classpath:appContext.xml"; GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(xmlConfigP..
| 스프링 의존객체 선택(Select Spring Dependency Object) @Autowired, @Resource, @Inject 어노테이션으로만 자동적으로 객체를 주입할 경우 컨테이너에서 주입할 대상이 여러개여서 의존성을 주입하지 못하는 경우가 발생할 수 있다. 다음과 같이 @Autowired를 통해 객체를 주입하려고 할 때, 컨테이너상에서는 Weapon 인터페이스를 상속한 2개의 bean 객체인 gun과 knife가 존재한다. @Autowired는 먼저 Type을 기준으로 주입할 객체를 정하기 때문에 같은 Type이 스프링 컨테이너 상에 존재할 경우 에러를 내게 된다. appContext.xml public class Player { @Autowired private Weapon weapon..
| 의존객체 자동 주입(Automatic Dependency Injection) 의존 객체 자동 주입(Automatic Dependency Injection)은 스프링 설정파일에서 혹은 태그로 의존 객체 대상을 명시하지 않아도 스프링 컨테이너가 자동적으로 의존 대상 객체를 찾아 해당 객체에 필요한 의존성을 주입하는 것을 말한다. 이것을 구현하는 방법은 @Autowired 또는 @Resource 어노테이션을 사용하여 구현한다. 그리고 이 두 어노테이션은 의존 객체를 찾는 방식에 있어 차이가 있다. @Autowired는 주입하려고 하는 객체의 타입이 일치하는지를 찾고 객체를 자동으로 주입한다. 만약에 타입이 존재하지 않는다면 @Autowired에 위치한 속성명이 일치하는 bean을 컨테이너에서 찾는다. 그리..
| 스프링 빈 범위 지정(Spring Bean Scope) 스프링 빈(Spring Bean)의 범위는 2가지로 나뉜다. 싱글턴(Singleton)과 프로토타입(Prototype)이다. 싱글턴 방식은 스프링 컨테이너(Spring Container)에서 자바 어플리케이션이 특정 bean을 가져올 때 딱 하나 유일한 인스턴스만을 제공하는 방식이다. 이 방식은 bean을 설정할 때 default값이다. 그와 반대로 프로토타입은 특정 bean을 가져올 때 가져올 때마다 다른 인스턴스들을 생성해서 제공하는 방식이다. 다음은 싱글턴, 프로토타입을 xml 설정파일 상에서 어떻게 설정할 것인지를 나타낸 xml 코드다. appContext.xml bean을 설정할 때 scope 속성을 통해 bean의 범위를 명시하면 된다..
| 스프링 빈 설정 파일 합치기(Spring Bean Configuration XML Merge) 스프링(Spring)에서 여러개로 나뉜 XML 설정파일들을 모아서 하나의 컨테이너로 생성하는 방법은 두 가지가 있다. 1. 자바 소스코드 상에서 Sring 배열로 클래스패스의 리스트들을 명시한 후 GenericXmlApplicationContext의 인자로 전달2. 다른 빈 XML 설정파일에서 여러 XML 설정파일을 합하는 을 입력한 후 클래스패스로서 전달 | 자바 소스코드 상에서 합치기 다음은 두 XML 설정파일이다. 현재 eclipse상의 스프링 프로젝트의 구조는 아래와 같다. appContext.xml과 appContext2.xml 두 설정파일이 존재한다. 이 두 설정파일의 정보는 다음과 같다. app..