티스토리 뷰

방법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();
    }
}

 

참조

 

웹 프로그래밍(풀스택)

부스트코스 무료 강의

www.boostcourse.org

 

댓글
Total
Today
Yesterday
링크
Apple 2023 맥북 프로 14 M3, 스페이스 그레이, M3 8코어, 10코어 GPU, 512GB, 8GB, 한글