1. Maven을 이용해 스프링 프레임워크를 사용하는 프로젝트를 생성
    2. Bean이 무엇인지 이해
    3. XML형식의 스프링 설정파일의 내용을 이해
    • Bean
    • ApplicationContext
    • DI

    1. 메이븐 프로젝트 생성하기 new >> new maven project (Quickstart)

     

     

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

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>kr.or.connect</groupId>
      <artifactId>diexam01</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>jar</packaging>
    
      <name>diexam01</name>
      <url>http://maven.apache.org</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </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>
    ----------------------------------------------------------------------------------------------
    
    </project>

     

    2. maven project 오른쪽 클릭 >> maven >> Update Project

    3. App.java   Apptest.java 

     

    Bean class란?

    예전에는 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;
    	}
    
    }

    Spring Bean Factory를 이용하여 Bean객체 이용하기

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

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>kr.or.connect</groupId>
      <artifactId>diexam01</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>jar</packaging>
    
      <name>diexam01</name>
      <url>http://maven.apache.org</url>
    
      <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>
      
      
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </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>
    </project>

     

    Spring maven xml 찾는법

    mvnrepository.com/artifact/org.springframework/spring-context

     

    Maven Repository: org.springframework » spring-context

     

    mvnrepository.com

    스프링 라이브러리 추가

    -----------------------------------------------------------------------------------------------------------------------------------

     

    src > main > resource 폴더 만들기 

     

    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>

     

    bean 태그를 하나 입력했는데, 위의 태그는 다음과 같은 의미를 가집니다.

    UserBean userBean - new UserBean();

     

    kr.or.connect.diexam01.UserBean userBean  = new kr.or.connect.diexam01.UserBean();

                                               // id                                    

     

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

    ApplicationContextExam01

    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("같은 인스턴스이다.");
    		}
    		
    	}
    }

    ApplicationContext ac = new ClasspathXmlApplicationContext(" ");

    빈에 들어있는 객체들을 모두 생성해서 메모리에다가 올려놓는다.

     

     

    DI 확인하기

    이번에는 DI 즉 의존성 주입을 확인해보도록 하겠습니다.

    Car와 Engine이라는 클래스 2개를 생성합니다.

     

    Engine.java

    package kr.or.connect.diexam01;
    
    public class Engine {
    	public Engine() {
    		System.out.println("Engine 생성자");
    	}
    	
    	public void exec() {
    		System.out.println("엔진이 동작합니다.");
    	}
    }

    Car.java

    package kr.or.connect.diexam01;
    
    public class Car {
    	Engine v8;
    	
    	public Car() {
    		System.out.println("Car 생성자");
    	}
    	
    	public void setEngine(Engine e) {
    		this.v8 = e;
    	}
    	
    	public void run() {
    		System.out.println("엔진을 이용하여 달립니다.");
    		v8.exec();
    	}
    }

    위의 Car 클래스가 제대로 동작하도록 하려면 보통 다음과 같은 코드가 작성되어야 한다.

    Engine e = new Engine();
    Car c = new Car();
    c.setEngine( e );
    c.run();

    1, 2 번째 줄을 Spring 컨테이너에게 맡기기 위해 설정파일에 다음과 같은 코드를 입력

    <bean id="e" class="kr.or.connect.diexam01.Engine"></bean>
    <bean id="car" class="kr.or.connect.diexam01.Car">
    	<property name="engine" ref="e"></property>
    </bean>

    즉, 위의 XML설정은 다음과 같은 의미

    Engine e = new Engine();
    Car c = new Car();
    c.setEngine( e );

     

    이번엔 위의 설정 파일을 읽어들여 실행하는 ApplicationContextExam02.java를 작성

    package kr.or.connect.diexam01;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class ApplicationContextExam02 {
    
    	public static void main(String[] args) {
    		ApplicationContext ac = new ClassPathXmlApplicationContext( 
    				"classpath:applicationContext.xml"); 
    
    		Car car = (Car)ac.getBean("car");
    		car.run();
    		
    	}
    }

    실행창

    자바 config Annotation 이용해서 만들기 다음학습

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading