이클립스를 이용해서 Maven Project를 먼저 생성 후 부터 진행하겠습니다.
pom.xml에 spring-context 모듈을 사용하겠습니다.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>spring4</groupId>
<artifactId>testProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.15</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
해당 클래스를 이클립스에 만들고 코드를 작성해보겠습니다.
실행시키면 이렇게 잘 출력이됩니다.
스프링은 원래 모듈을 가져와서 사용하는데 기본적으로 자바를 기반으로 만들었기 때문에 순수 자바코드도 잘 실행이 됩니다.
프로젝트의 구조를 다시한번 봤을때 resources안에 있는것은 직접적인 기능을 구현하는 것이 아닌 도움을 주는 역할의 파일들을 모아 놓는곳이라고 했었는데요.
applicationContext.xml파일이 있네요.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="tWalk" class="lec03Pjt001.TransportationWalk" />
</beans>
applicationContext.xml파일 안에는 이런 코드를 작성을 했습니다.
스프링은 컨테이너 안에 객체를 모아둡니다.
스프링은 객체 메모리 로딩을 하긴하는데 메모리 생성이 될 때 스프링 컨테이너라는 IoC안에 큰그릇을 만들어 둡니다.
이 큰 그릇안에 객체를 모두 생성해 놓는 것이죠.
실제로 필요할때마다 이 객체들을 가져다가 사용하게됩니다.
또한 스프링 컨테이너에서는 객체를 Bean이라고 하는데 객체를 만들어주는 것이 applicationContext.xml 파일입니다.
위의 코드에서 bean태그를 보겠습니다.
id는 tWalk이며 class는 lec03Pjt001.TransportationWalk라고 나와있습니다.
패키지명과 클래스의 풀네임을 의미하겠네요.
이렇게 명시해주면 이 클래스를 직접 생성한다라는 의미가 됩니다.
new 키워드를 통해 객체를 생성하지 않아도 사용을 할수있습니다.
위의 코드에서 TransportationWalk 객체를 new 키워드로 생성하지 않아도 잘 실행이 됩니다.
한가지 다른것은 앞뒤로 뭔가 로그가 찍히고 있는데요.
컨테이너에 접근하여 객체를 생성하기 때문에 그러한 과정에서 로그가 찍힌것입니다.
package lec03Pjt001;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass {
public static void main(String[] args) {
GenericXmlApplicationContext ctx =
new GenericXmlApplicationContext("classpath:applicationContext.xml");
TransportationWalk transportationWalk = ctx.getBean("tWalk", TransportationWalk.class);
transportationWalk.move();
ctx.close();
}
}
위의 코드는 스프링 컨테이너에 먼저 접근을 한뒤 스프링 컨테이너에서 tWalk라는 bean객체를 가져다 쓴예시입니다.
GenericXmlApplicationContext를 사용하여 컨테이너에 접근하는 방법이 있습니다.
GenericXmlApplicationContext클래스를 사용하는데 파라미터로 applicationContext.xml 리소스를 작성하면 됩니다.
이렇게 컨테이너에 접근을 한 객체를 만들었다면 getBean을 이용해서 bean객체를 가져올수 있게됩니다.
이 글은 자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌를 수강하며 공부한 내용을 정리한 글입니다.
https://www.inflearn.com/course/dashboard
'Java 관련 > Spring Legecy' 카테고리의 다른 글
[Spring] Maven을 이용한 스프링 프로젝트 생성 (0) | 2022.09.03 |
---|---|
[Spring] JavaConfig(xml을 java로 변경) (0) | 2022.04.12 |
[Spring] Spring JDBC (0) | 2022.04.11 |
Spring] update(버전설정 잡기) (0) | 2022.04.10 |
[Spring] 파일 업로드 / 다운로드(file upload / download) (0) | 2022.04.09 |