Spring IoC/DI 실습

Minkyeong Kim·2021년 11월 15일
0

[boostcourse] Web-Backend

목록 보기
23/55

프로젝트 생성

상단바 File - New - Maven Project - 디렉토리 설정 - maven-archetype-quickstart를 archetype으로 설정한 뒤 Next - 프로젝트 이름 설정 - Finish

pom.xml 설정

1. maven plugin 등록

  • dependencies 정의가 끝난 부분에 추가
  <build>
     <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
  </build>

2. Spring version 입력

  • properties 마지막줄에 입력하여 상수값처럼 모듈을 가져올때마다 사용할 수 있도록 함
<spring.version> 4.3.14.RELEASE</spring.version>

3. Spring context 추가

  • 앞서 상수로 설정한 버전에 맞는 spring context maven에 추가
<!-- Spring -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context</artifactId>
		<version>${spring.version}</version>
	</dependency>

UserBean 객체 생성

bean Class

  • 일반적인 자바 클래스
  • 기본생성자를 가짐
  • 필드는 private하게 선언
  • getter, setter 메소드를 가짐
  • getName() setName() 메소드를 name 프로퍼티(property)라고 함 (용어 중요)
  • kr.or.connect.diexam01에 클래스 생성
package kr.or.connect.diexam01;

public class UserBean {
	private String name;
	private int age;
	private boolean male;
	
	public UserBean() {}
	public UserBean(String name, int age, boolean male) {
		this.name = name;
		this.age=age;
		this.male=male;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public boolean isMale() {
		return male;
	}
	public void setMale(boolean male) {
		this.male = male;
	}
	
}

Application Context 설정

  • src/main에 resources 폴더 생성
  • 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="userBean" class="kr.or.connect.diexam01.UserBean"></bean>

</beans>

ApplicationContext를 이용한 객체 생성

  • ClassPathXmlApplicationContext 클래스를 import하여 ApplicationContext 선언
  • ApplicationContext의 getBean 메서드에 파라미터로 Bean의 id를 넣어 앞서 정의해둔 Bean을 가져올 수 있다
  • Spring Container에서 singleton pattern을 이용해 bean을 생성하기 때문에 매번 같은 인스턴스를 가져온다
    • singleton pattern: 스프링 컨테이너는 객체를 하나만 둔다
package kr.or.connect.diexam01;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ApplicationContextExam01 {

	public static void main(String[] args) {
		ApplicationContext ac = new ClassPathXmlApplicationContext( 
				"classpath:applicationContext.xml"); 
		System.out.println("초기화 완료.");
		
		UserBean userBean = (UserBean)ac.getBean("userBean");
		userBean.setName("kim");
		System.out.println(userBean.getName());
		
		UserBean userBean2 = (UserBean)ac.getBean("userBean");
		if(userBean == userBean2) {
			System.out.println("같은 인스턴스이다.");
		}
		
	}
}

0개의 댓글