xml파일을 이용한 설정

최준영·2021년 9월 26일
0
post-custom-banner

1. Maven으로 Java프로젝트 만들기




  • maven-archetype-quickstart
  • group id, artifact id는 패키지가 될 것이기 때문에 소문자로 지정한다.
  • artifact Id는 실제 프로젝트 이름을 기입한다.

2. pom.xml 파일에 JDK를 사용하기 위한 플러그인 설정 추가

  <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>

코드 기입 후 maven update project

properties > javacompiler에서 1.8 버전 확인

테스트 파일



  • 테스트가 성공하면 성공했다는 메세지와 함께 녹색 막대가 보여진다.
  • 나중에 따로 공부해보자

3. UserBean.java 생성


  • 예전에는 Visual한 컴포넌트를 Bean이라고 불렀지만, 최근에는 일반적인 java 클래스를 Bean 클래스라고 말한다.
  • Bean 클래스의 3가지 특징
    • 기본 생성자를 가지고 있다.
    • 필드는 private하게 선언한다.
    • getter, setter 메소드를 가진다
    • getName(), setName() 메소드를 name 프로퍼티(property)라고 한다.
  • UserBean.java
package kr.or.connect.diexam01;

//빈클래스
public class UserBean {
	
	//필드는 private한다.
	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;
	}

	// setter, getter메소드는 프로퍼티라고 한다.
	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return 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;
	}

}

4. Spring Bean Factory를 이용하여 Bean 객체 이용


1) pom.xml파일을 다음과 같이 수정

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.version> 4.3.14.RELEASE</spring.version>
  </properties>

  <dependencies>
	<!-- Spring -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context</artifactId>
		<version>${spring.version}</version>
	</dependency>
  </dependencies>
  • properties는 pom.xml의 dependency 등에서 상수로 사용할 수 있게 해준다. spring은 버전이 다양해서 다른 버전을 사용하고 싶을 때 해당 상수만 바꾸어주면 된다.
  • maven spring context으로 구글링하면 dependency 부분을 추가할 수 있다.

2) 추가된 라이브러리를 확인한다.

  • spring context가 다른 것들을 상속받는 등 관계를 맺고 있는 것들이 있기 때문에 다같이 알아서 받아온다.

3) resouces 소스 폴더 생성

  • resouces 폴더는 스프링에게 정보를 줘야할 파일을 여기에 저장한다.
  • 소스랑 자바 파일이 섞이면 관리하기 힘드므로 따로 폴더를 만들어 준다.

  • src/main 하위에 resouces 폴더 추가 후 xml 파일 생성

4) resources 소스 폴더에 xml 파일을 작성

  • 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>
  • 가장 바깥쪽 태그(루트 엘리먼트)가 beans 엘리먼트이어야 하고, xml 스카에 대한 설정이 되어있어야 한다.
  • bean 태그를 입력했는데, 다음과 같은 의미를 가진다. kr.or.connect.diexam01.UserBean userBean = new kr.or.connect.diexam01.UserBean();
  • spring 컨테이너는 이런 객체를 하나만 생성해서 가지고 있다. 이를 싱글톤 패턴이라고 한다. 자세한건 디자인 패턴을 공부하자.

5. ApplicationContext를 이용해서 설정파일을 읽어들여 실행


  • 앞에서 스프링 설정 파일을 작성했으니, 해당 설정 파일을 읽어들이는 객체를 생성해야 한다. 먼저 스프링이 가진 공장을 생성한다.
  • ApplicationContextExam01.java
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) {
        // bean의 정보를 모두 읽어서 객체를 전부 생성한 후 메모리에 올려놓는다.
        // 문제가 발생하면 해당 어플리케이션 종료
		ApplicationContext ac = new ClassPathXmlApplicationContext( 
				"classpath:applicationContext.xml"); 
		System.out.println("초기화 완료.");
		
        // id가 userBean과 일치하는 애를 찾은 후 object 형태로 리턴한다.
		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("같은 인스턴스이다.");
		}
		
	}
}
  • ApplicationContext를 구현하는 다양한 컨테이너가 존재한다. 그 중 xml파일을 classpath에서 읽어들여서 사용하는 객체가 ClassPathXmlApplicationContext 이다.
  • 메인에 들어있는 리소스 폴더에서 xml파일은 자동으로 classpath로 지정된다. 자바 디렉토리에서 만들어진 class와 마찬가지로 bean 디렉토리에 생성되어 있을 것이다.
profile
do for me
post-custom-banner

0개의 댓글