2013년 9월 23일 월요일

[9주차 2일] Spring Framwork

- AOP(Aspect Oriented Programming)
: 메서드 앞뒤로 필터를 끼워서 쓸수 있도록 하는 프로그래밍

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
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 컨테이너에서 관리할 객체를 선언한다.
. Bean 컨테이너가 객체를 생성하여 보관한다.
. 해당 객체의 setter 메서드를 호출하여 의존 객체를 넣어준다.
-->

<!-- Student 객체 생성  ==> 's1'이라는 키로 저장하라. -->
<bean id="s1" class="net.bitacademy.java41.test.t01.Student"></bean>

<!-- 기본 생성자를 이용해서 객체 생성 ==> setter 호출하는 방법 -->
<bean id="s2" class="net.bitacademy.java41.test.t01.Student">
<property name="name" value="홍길동"></property>
<property name="age">
<value>50</value>
</property>
<property name="tel" value="1111-2222"/>
</bean>

<!-- 호출할 생성자를 지정하는 방법 -->
<bean id="s3" class="net.bitacademy.java41.test.t01.Student">
<constructor-arg value="임꺽정"/>
<property name="age" value="30"/>
<property name="tel" value="1111-2222"/>
</bean>

<!-- 객체를 요구할 때 마다 생성하게 하는 방법
. scope: singleton(default), prototype(매번생성), session, request
-->
<bean id="s4" class="net.bitacademy.java41.test.t01.Student" scope="prototype">
<constructor-arg value="임꺽정"/>
<property name="age" value="30"/>
<property name="tel" value="1111-2222"/>
</bean>

<!-- bean 태그의 속성을 이용하여 setter 메서드 호출하기
1) 기존의 속성과 프로퍼티를 호출하는 속서을 구분하기 위한 태그 네임스페이스 지정.
네임스페이스란? 태그들을 모아 놓은 패키지를 말함.
xmlns="http://www.springframework.org/schema/beans/p"

2) 'p'라는 접두사를 사용하여 프로퍼티 이름을 지정하면 된다.
p:name="홍길동"
-->
<bean id="s5" class="net.bitacademy.java41.test.t01.Student"
p:name="일지매" p:age="60" p:tel="3434-3434"/>

</beans>





package net.bitacademy.java41.test.t01;

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

public class Spring01 {

public static void main(String[] args) {
ApplicationContext  ctx = new ClassPathXmlApplicationContext("net/bitacademy/java41/test/t01/application-context.xml");
Student s =  (Student) ctx.getBean("s5");

System.out.println(s.getName());
System.out.println(s.getAge());
System.out.println(s.getTel());
}

public static void main04(String[] args) {
ApplicationContext  ctx = new ClassPathXmlApplicationContext("net/bitacademy/java41/test/t01/application-context.xml");
Student s =  (Student) ctx.getBean("s4");

// 기본적으로 객체는 싱글톤 방식으로 관리한다.
Student s2 = (Student) ctx.getBean("s4");
s2.setName("임꺽정2");
s2.setAge(50);
s2.setTel("5555-6666");

System.out.println(s.getName());
System.out.println(s.getAge());
System.out.println(s.getTel());

System.out.println("---------------");
System.out.println(s2.getName());
System.out.println(s2.getAge());
System.out.println(s2.getTel());

if (s == s2) {
System.out.println("s == s2 같은객체");
} else {
System.out.println("s != s2 다른객체");
}
}

public static void main03(String[] args) {
ApplicationContext  ctx = new ClassPathXmlApplicationContext("net/bitacademy/java41/test/t01/application-context.xml");
Student s =  (Student) ctx.getBean("s3");
System.out.println(s.getName());
System.out.println(s.getAge());
System.out.println(s.getTel());

// 기본적으로 객체는 싱글톤 방식으로 관리한다.
Student s2 = (Student) ctx.getBean("s3");
if (s == s2) {
System.out.println("s == s2 같은객체");
}
}

public static void main02(String[] args) {
ApplicationContext  ctx = new ClassPathXmlApplicationContext("net/bitacademy/java41/test/t01/application-context.xml");
Student s =  (Student) ctx.getBean("s2");
System.out.println(s.getName());
System.out.println(s.getAge());
System.out.println(s.getTel());
}

public static void main01(String[] args) {
ApplicationContext  ctx = new ClassPathXmlApplicationContext("net/bitacademy/java41/test/t01/application-context.xml");
Student s =  (Student) ctx.getBean("s1");
if (s != null) {
System.out.println("정말 자동 생성된다.");
} else {
System.out.println("엥.....");
}
}


}




댓글 없음:

댓글 쓰기