Spring XML 설정
Spring 프레임워크의 초기에는 Java 설정이 없고 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"
xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- bean definitions here -->
<bean id="name" class="java.lang.String">
<constructor-arg value="Hyeon" />
</bean>
<bean id="age" class="java.lang.Integer">
<constructor-arg value="35" />
</bean>
<bean id="game" class="com.in28minutes.learnspringframework.game.PacmanGame" />
<bean id="gameRunner" class="com.in28minutes.learnspringframework.game.GameRunner">
<constructor-arg ref="game" />
</bean>
</beans>
그래서 이와 같이 XML 설정파일을 작성하여 Bean들을 생성했습니다. 그 후
public class XmlConfigurationLuncherApplication {
public static void main(String[] args) {
try (var context =
new ClassPathXmlApplicationContext
("contextConfiguration.xml"))
{
Arrays.stream(context.getBeanDefinitionNames())
.forEach(System.out::println);
System.out.println(context.getBean("name"));
System.out.println(context.getBean("age"));
context.getBean(GameRunner.class).run();
}
}
}
@Configuration과 @ComponentScan이 없이 위와 같이 자바에서 ClassPathXmlApplicationContext를 이용하여 해당 파일이 src/main/resources에 있을 경우 이름만으로 불러올 수 있었습니다. 또한 Bean에 필요한 이름은 id을 통해 지정하고, class로 타입을 지정합니다. 또한 constructor-arg통해 생성자 매서드를 정의하는 것처럼 사용할 수 있습니다.
name
age
game
gameRunner
Hyeon
35
Running game: com.in28minutes.learnspringframework.game.PacmanGame@4116aac9
위로 이동
아래로 이동
왼쪽으로 이동
오른쪽으로 이동
그로인해 이와 같은 결과를 얻을 수 있지만 시대가 지나면서 Spring의 발전에 따라서 사용하지는 않습니다. 하지만 여러 오래된 프로젝트에서는 사용하는 경우가 있으므로 인지는 하고있는 것이 좋습니다.
어노테이션과 XML 설정의 차이
Annotations | XML Configuration | |
사용감 | 변수 자체 소스에 어노테이션으로 적용 가능해 쉽다. | 패키지 이름을 class에 전체를 입력해야 하는등 번거롭다. |
간결함 | 간결하다. | 간결하지 않다. |
POJO | 어노테이션 사용시 Spring 프레임워크를 이용하므로 깔끔하지 않다. | POJO가 깔끔하다. |
관리 | 소스와 가깝게 어노테이션을 표현해 관리하기 편하다. |
class가 바뀌거나 패키지를 바꿀때 번거로워 관리하기 불편하다. |
사용 빈도 | 매우 자주 사용한다. | 요즘 거의 사용되지 않는다. |
권장 사항 | 둘 다 사용할 수 있고 사용햐도 괜찮지만 섞어서 사용하면 안된다. | |
디버그 | Spring 프레임워크를 잘알아야 해서 디버그 관리가 어렵다. | XML 설정이 장황하게 많은 것을 명시적으로 표시해 어노테이션에 비해서는 쉽다. |
'코딩 공부 > web & Java' 카테고리의 다른 글
[Spring] 중요한 어노테이션 정리 및 복습 (0) | 2023.10.09 |
---|---|
[Spring] 스테레오 타입 어노테이션 (0) | 2023.10.09 |
[Spring] Jakarta Contexts and Dependency injection (CDI) (1) | 2023.10.06 |
[Java] Java EE, J2EE, Jakarta EE (1) | 2023.10.06 |
[Spring] @PostConstruct와 @PreDestroy (1) | 2023.10.06 |