Java/SPRING

스프링 툴 [Spirng Toos Suite] SPRING4.0 이란

백엔드 신입사원( soft 5.10 입사) 2022. 1. 5. 18:41
반응형

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라는 이름의 빈 객체가 리턴된다.

출력 결과 :

반응형