티스토리 뷰
방법1 - applicationContext.xml에서 등록하는 방법
maven 프로젝트 구조에서 src/main/resources/applicationContext.xml 파일을 생성하여 bean을 등록 및 관리할 수 있다.
ㄴsrc
ㄴmain
ㄴjava : 자바 패키지 폴더와 소스 코드가 위치함.
ㄴresources : *.properties, *.xml 등 설정파일들이 위치함.
ㄴwebapp : WEB-INF와 웹 관련 리소스(html, jsp)들이 위치함.
ㄴtest
ㄴjava : 테스트와 관련된 자바 패키지와 소스코드가 위치함.
ㄴresources : 테스트와 관련된 설정파일이 위치함.
ㄴtarget : 컴파일, 패키징된 결과물이 위치함.
ㄴpom.xml : Maven 설정 파일
public class Car {
private Engine v8;
public Car() {
System.out.println("Car 생성자");
}
public void setEngine(Engine e) {
this.v8 = e;
}
public void run() {
System.out.println("엔진을 이용하여 달립니다.");
v8.exec();
}
}
package kr.or.connect.diexam01;
public class Engine {
public Engine() {
System.out.println("Engine 생성자");
}
public void exec() {
System.out.println("엔진이 동작합니다.");
}
}
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="e" class="kr.or.connect.diexam01.Engine"/>
<bean id="c" class="kr.or.connect.diexam01.Car">
<property name="engine" ref="e"></property>
</bean>
</beans>
public class ApplicationContextExam02 {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
Car car = (Car) ac.getBean("c");
car.run();
}
}
방법2 - @Configuration 어노테이션을 이용한 방법
maven 프로젝트 구조에서 src/main/java/ApplicationConfig.java를 생성하여 bean을 등록 및 관리할 수 있다.
다른 라이브러리가 가지고 있는 객체를 이용할 경우 @Bean을 직접 붙여서 이용한다.
*Car.java와 Engine.java는 방법1과 동일하게 생성한다.
@Configuration
public class ApplicationConfig {
@Bean
public Car car(Engine e) {
Car c = new Car();
c.setEngine(e);
return c;
}
@Bean
public Engine engine() {
return new Engine();
}
}
public class ApplicationContextExam03 {
public static void main(String[] args) {
ApplicationContext ac = new AnnotationConfigApplicationContext(ApplicationConfig.class);
//Car car = (Car) ac.getBean(Car.class); 두 방법 중 하나 선택 가능
Car car = (Car) ac.getBean("car");
car.run();
}
}
방법3 - @Configuration과 @ComponentScan 어노테이션을 이용한 방법
@Configuration
@ComponentScan("kr.or.connect.diexam01") //@ComponentScan("패키지명")
public class ApplicationConfig2 {
}
@Component
public class Car2 {
@Autowired // setEngine(Engine e)을 대체함.
private Engine v8;
public Car2() {
System.out.println("Car 생성자");
}
public void run() {
System.out.println("엔진을 이용하여 달립니다.");
v8.exec();
}
}
@Component
public class Engine2 {
public Engine2() {
System.out.println("Engine 생성자");
}
public void exec() {
System.out.println("엔진이 동작합니다.");
}
}
public class ApplicationContextExam04 {
public static void main(String[] args) {
ApplicationContext ac = new AnnotationConfigApplicationContext(ApplicationConfig2.class);
Car2 car = (Car2) ac.getBean(Car2.class);
car.run();
}
}
참조
'Framework > Spring' 카테고리의 다른 글
Spring JDBC (0) | 2021.01.04 |
---|---|
Inversion of Control / Dependency Injection (0) | 2021.01.01 |
이클립스 maven 프로젝트에서 spring 라이브러리 추가 (0) | 2021.01.01 |
프레임워크와 라이브러리 (0) | 2021.01.01 |
Web Server와 Web Application Server의 차이 (0) | 2020.12.28 |
댓글