[Spring] Java Spring XML Configuration
Java Spring XML Configuration
/ XML Configuration /

<?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="Ranga" />  
    </bean>  
    <bean id="age" class="java.lang.Integer">  
        <constructor-arg value="35" />  
    </bean>  
    <!--   <context:component-scan  
            base-package="com.in28minutes.learnspringframework.game"/>     -->    <bean id="game" class="com.in28minutes.learnspringframework.game.PacmanGame"/>  
  
    <bean id="gameRunner"  
          class="com.in28minutes.learnspringframework.game.GameRunner">  
        <constructor-arg ref="game" />  
    </bean>  
</beans>
import java.util.Arrays;  
  
import org.springframework.context.support.ClassPathXmlApplicationContext;  
  
import com.in28minutes.learnspringframework.game.GameRunner;  
  
public class XmlConfigurationContextLauncherApplication {  
  
    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();  
  
        }  
    }  
}

Annotations vs XML configuration
| Heading | Annotations | XML Configuration | 
|---|---|---|
| Ease of use | Very Easy (defined close to source - class,method and/or variable) | Cumbersome | 
| Short and concise | Yes | No | 
| Clean POJOs | No. POJOs are polluted with Spring Annotations | Yes. No change in Java code | 
| Easy to Maintain | Yes | No | 
| Usage Frequency | Alomost all recent projects | Rarely | 
| Recommendation | Either of them is fine BUT be consistent | Do NOT mix both | 
| Debugging  difficulty  | 
      Hard | Medium | 
정리
- XML 로 bean을 주입하고 북치고 장구치고 가능하다.
 - 사실 이전에는 XML로 작업했다고 한다.
 - 하지만 옛날 방법이며 요즘에는 잘 사용하지 않는다고 한다.
 - 나름대로 XML 의 장점도 위와 같이 어느정도 있다.
 - 대부분 Annotation을 사용하지만 디버깅이 어렵다는 단점도 있다.
 - 둘 다 좋은 방법이다. 섞어 쓰지만 않으면 된다.
 
댓글남기기