스프링 툴 [Spirng Toos Suite] SPRING4.0 이란
spring.io 사이트에서 SpringToosSuite4 다운로드, 마켓 Install
- Spring Tools 3 Add-On for Spring Tools 4 3.9.20.RELEASE
- Eclipse Enterprise Java and Web Developer Tools 3.24
스프링 프레임 워크 주요 모듈

스프링 프레임워크 주요 모듈 간 의존 관계
Spring-context 모듈은 Spring-beans 모듈을 필요로 하고 Spring-beans 모듈은 Spring-core 모듈을 필요로 하는데,
결과적으로 Spring-context모듈을 사용하려면 Spring-beans 모듈 이외에 Spring-core 모듈도 필요하다.
다수의 모듈들이 Spring-context 모듈을 직/간접적으로 의존하고 있어, 스프링 프레임 워크를 이용해 웹 어플리케이션을 개발하거나 DB를 연동할 때는 Spring-context, Spring-aop, Spring-beans, Spring-core 모듈은 항상 함께사용된다.
# Spring-context만 사용하면 하위 모듈을 추가로 사용할수있다.

스프링의 주요 모듈 목록
maven(메이븐) 프로젝트에서 모듈을 사용하려면 사용할 모듈 이름과 버전을 의존 설정에 추가해 주면된다.
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.0.4.RELEASE</version>
</dependency>
</dependencies>
메이븐 의존 설정에 추가한 모듈이 필요로 하는 다른 모듈도 다함께 다운로드되며, 위와 같은 메이븐 설정을 사용하면 Spring-aop, Spring-beans, Spring-core모듈도 함께 다운로드 받는다…

의존설정시 다운로드파일
UTF-8 캐릭터셋과 자바 1.7 버전을 사용하기 위해 pom.xml파일에 코드를 추가해준다.
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
메이븐 활용 .1 인터페이스 구현 , 2개의 클래스
public interface BuildRunner {
public void build(List<String> srcDirs, String binDir);
}
public class MavenBuildRunner implements BuildRunner {
private String mavenPath; // 변수 생성
@Override // 오버라이드
public void build(List<String> srcDirs, String binDir) {
String info ="메이븐 경로(applicationContext.XML에 설정): " + mavenPath + "\n";
for(String srcDir : srcDirs)
info += "소스 경로: " + srcDir + "\n";
info += "클래스 파일 경로: " + binDir + "\n";
System.out.printf("MavenBuildRunner.build()실행 \n%s", info);
}
public void setMavenPath(String mavenPath) {
this.mavenPath = mavenPath;
}
}
public class Project {
private List<String> srcDirs;
private String binDir;
private BuildRunner buildRunner;
public void build() {
buildRunner.build(srcDirs, binDir);
}
public void setSrcDirs(List<String> srcDirs) {
this.srcDirs = srcDirs;
}
public void setBinDir(String binDir) {
this.binDir = binDir;
}
public void setBuildRunner(BuildRunner buildRunner) {
this.buildRunner = buildRunner;
}
}
Project 클래스의 build()메서드는 필드로 참조하고 있는 buildRunner 객체의 build()메서드를 호출하고, Project 객체가 사용할 buildRunner 객체는 setBuildRunner()메서드를 통해 설정한다.
스프링 설정
스프링이 객체를 생성하고 조립할 때 사용할 설정 정보를 작성하는 것이다.
설정 정보는 XML파일이나 자바 코드를 이용해서 작성할 수 있는데, 여기서는 XML파일을 이용해서 작성 할 것이다.
<bean id="mvnBuildRunner" class="net.madvirus.spring4.chap01.MavenBuildRunner">
<property name="mavenPath">
<value>c:\apache-maven-3.1.1</value>
</property>
</bean>
<bean id="sampleProject" class="net.madvirus.spring4.chap01.Project">
<property name="srcDirs">
<list>
<value>src/</value>
<value>srcResources</value>
</list>
</property>
<property name="binDir" value="bin" />
<property name="buildRunner">
<ref bean="mvnBuildRunner"/>
</property>
</bean>
</beans>
08 ~ 13까지의 코드는 MavenBuildRunner 타입의 객체를 생성하고, mavenPath 프로퍼티의 값을 "c:\apache-maven-3.1.1"로 설정한다는 의미, 15 ~ 27까지 설정도 비슷하다.
17 ~ 22 List타입의 프로퍼티에도 값을 설정 할수 있고,
24 ~ 26처럼 bean을 프로퍼티 값으로 설정해 줄 수도 있다.
스프링을 이용한 객체 생성 및 사용
스프링의 기본 설정을 진행하였고 XML설정 파일로 부터 스프링 컨테이너를 생성하고 필요한 객체를 컨테이너로 부터 가져와 사용하는 것이다.
스프링은 설정 정보로부터 생성한 스프링 빈 객체를 생성/조립/관리하는 기능을 제공하고, 이 기능을 제공하는 객체를 컨테이너라고 부른다.
XML설정 파일로부터 스프링 컨테이너를 생성할 때는 GenericXmlApplication Context 클래스를 사용하면된다.
이 클래스를 이용해보자
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainBySpring {
public static void main(String[] args) {
String configLocation = "classpath:applicationContext.xml";
AbstractApplicationContext ctx =
new GenericXmlApplicationContext(configLocation);
Project project = ctx.getBean("sampleProject", Project.class);
project.build();
ctx.close();
}
}
10 ~ 11에서 GenericXmlApplicationContext(configLocation) 객체를 생성하고 있는데 해당 코드에서 생성된 객체가 바로 스프링 컨테이너 역할을 수행한다.
- 스프링은 ApplicationContext라는 인터페이스를 통해 컨테이너가 제공해야 할 기본 기능을 정의하고 있다. (ApplicationContext 인터페이스 상위에는 BeanFactory라는 인터페이스가 있다.)
- AbstractApplicationContext는 컨테이너 종료 close();메서드와 같은 관리기능을 제공한다
- GenericXmlApplicationContext는 AbstractApplicationContext를 상속받아 만들어진 클래스로서 XML 파일에서 스프링 빈 설정 정보를 읽어온다.
getBean() 메서드에서 첫 번째 파라미터는 구하고자 하는 스프링 빈 객체의 이름 sampleProject 두번째 파라미터는 그 빈 객체의 타입이다 Project.class
XML에서 설정한 sampleProject라는 이름의 빈 객체가 리턴된다.
출력 결과 :
