이제 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:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="spring.di.ui"/>
// @Bean을 추가해보기 위해서 냄겨둠
<bean id="exam" class="spring.di.entity.NewlecExam" p:kor="10" p:eng="10" p:com="10" p:math="10"/>
</beans>
설정 클래스 위에 `@Configuration`을 추가한다.
그리고 `<context:component-scan base-package="spring.di.ui"/>`를 `@ComponentScan("spring.di.ui")`로 대체한다.
<context:component-scan base-package="spring.di.ui, spring.di.entity"/> 처럼 패키지의 경로가 2개 이상일떄는 배열로 표시해준다. @ComponentScan({spring.di.ui, spring.di.entity})
또한 이전시간에 배운 @Bean 또한 Config 클래스에 추가한다. @Bean 어노테이션이 달린 메서드의 이름은 객체이기 때문에 동사형태가 아닌 명사형태로 지어야한다.
@ComponentScan("spring.di.ui")
@Configuration
public class NewlecDIConfig {
@Bean
public Exam exam() {
return new NewlecExam();
}
}
또한 이제 xml이 아닌 어노테이션을 사용하기 때문에 ApplicationContext의 구현체도 변경해준다.
public class Program {
public static void main(String[] args) {
//ApplicationContext context = new ClassPathXmlApplicationContext("spring/di/setting.xml");
ApplicationContext context = new AnnotationConfigApplicationContext(NewlecDIConfig.class);
ExamConsole console = context.getBean(ExamConsole.class);
console.print();
}
}
만약 Config 설정을 여러 개로 나눠서 설정하고 싶을때는 아래와 같이도 가능하다.
public class Program {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.register(NewlecAppConfig.class); // 혹은 ctx.register(AppConfig.class, OtherConfig.class);
ctx.refresh();
ExamConsole console = (ExamConsole) context.getBean("console");
console.print();
}
}
참고자료
[1] 유튜브 채널 뉴렉처 - XML Configuration을 Java Configuration으로 변경하기
'🖥️ Backend > Spring' 카테고리의 다른 글
[Spring] 16.Spring AOP(XML, AroundAdvice) (0) | 2024.12.31 |
---|---|
[Spring] 15.순수 Java AOP (0) | 2024.12.31 |
[Spring] 13.@Component (0) | 2024.12.30 |
[Spring] 12.@Autowired (0) | 2024.12.30 |
[Spring] 11.Collection DI (0) | 2024.12.27 |