Click here to load reader

스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원

  • Upload
    3-2

  • View
    52

  • Download
    5

Embed Size (px)

Citation preview

1

Spring Framework & MyBatis &

Spring IoC & DI 2.5 Spring DI(Dependency Injection) 2.5.1 (Setter Injection) XML 2.5.2 (Setter Injection) 2.5.3 (Constructor Injection) XML 2.5.4 (Constructor Injection) 2.5.5 (Method Injection) 2.5.5.1 Method Injection(Method Replace) 2.5.5.2 Method Injection(Getter Injection)CONTENTS

2.5.6 Simple Value Injection 2.5.7 SpEL Value Injection(XML ) 2.5.8 SpEL Value Injection( ) 2.5.9 ref Value Injection(ref local, ref bean, id, name ) 2.5.10 XML 2.5.11 ApplicationContext (, ) 2.5.12 (Collection Injection), XML 2.5.12 (Collection Injection),

Chapter 2 Spring IoC & DI2-5

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-1. (Setter Injection) XML

[Emp.java]

package edu.ojc.setter1;

interface Emp {public abstract void gotoOffice();public abstract void getoffWork(); }: setter .[Programmer.java]

package edu.ojc.setter1;

class Programmer implements Emp {public void gotoOffice() {System.out.println(" .");}public void getoffWork() {System.out.println(" .");}}

4

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-1. (Setter Injection) XML

[Designer.java]

package edu.ojc.setter1;class Designer implements Emp {public void gotoOffice() {System.out.println(" .");}public void getoffWork() {System.out.println(" .");}}[Develop.java]

package edu.ojc.setter1;public class Develope {Emp emp;

public void setEmp(Emp emp) {this.emp = emp;}void coding() {emp.gotoOffice();System.out.println("...");emp.getoffWork();}}

5

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-1. (Setter Injection) XML

[Src/main/resources/ojc1.xml] p

[TestMain.java]

package edu.ojc.setter1;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestMain {public static void main(String[] args) {ApplicationContext context =new ClassPathXmlApplicationContext("ojc1.xml"); Develope dev = (Develop)context.getBean("develope"); dev.coding();}}

6

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-2. (Setter Injection)

[Emp.java]

package edu.ojc.setter2;

interface Emp {public abstract void gotoOffice();public abstract void getoffWork(); }[Programmer.java]

package edu.ojc.setter2;import org.springframework.stereotype.Service;@Serviceclass Programmer implements Emp {public void gotoOffice() {System.out.println(" .");}public void getoffWork() {System.out.println(" .");}}[Designer.java]

package edu.ojc.setter2;import org.springframework.stereotype.Service;

@Serviceclass Designer implements Emp {public void gotoOffice() {System.out.println(" .");}public void getoffWork() {System.out.println(" .");}}

7

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-2. (Setter Injection)

[Develop.java]

package edu.ojc.setter2;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Service;@Servicepublic class Develope {Emp emp;@Autowired@Qualifier("programmer")public void setEmp(Emp emp) {this.emp = emp;}void coding() {emp.gotoOffice();System.out.println("...");emp.getoffWork();}}[Src/main/resources/ojc2.xml]

8

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-2. (Setter Injection)

[TestMain.java]

package edu.ojc.setter2;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestMain {public static void main(String[] args) { ApplicationContext context =new ClassPathXmlApplicationContext("ojc1.xml"); Develope dev = (Develop)context.getBean("develope"); dev.coding();}}

9

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-2. (Setter Injection)

[TestMain.java]

package edu.ojc.setter2;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestMain {public static void main(String[] args) { ApplicationContext context =new ClassPathXmlApplicationContext("ojc1.xml"); Develope dev = (Develop)context.getBean("develope"); dev.coding();}}

10

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-3. (Constructor Injection) XML

[Emp.java]

package edu.ojc.constructor1;

interface Emp {public abstract void gotoOffice();public abstract void getoffWork(); }[Programmer.java]

package edu.ojc.constructor1;class Programmer implements Emp {public void gotoOffice() {System.out.println(" .");}public void getoffWork() {System.out.println(" .");}}[Designer.java]

package edu.ojc.constructor1;class Designer implements Emp {public void gotoOffice() {System.out.println(" .");}public void getoffWork() {System.out.println(" .");}}

11

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-3. (Constructor Injection) XML

[Develop.java]

package edu.ojc.constructor1;public class Develope {Emp emp;

public Develope(Emp emp) {this.emp = emp;}void coding() { emp.gotoOffice();System.out.println("...");emp.getoffWork();}}[Src/main/resources/ojc3.xml] C

12

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-3. (Constructor Injection) XML

[TestMain.java]

package edu.ojc.constructor1;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestMain {public static void main(String[] args) { ApplicationContext context =new ClassPathXmlApplicationContext("ojc3.xml"); Develope dev = (Develope)context.getBean("develope"); dev.coding();}}

13

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-4. (Constructor Injection)

[Emp.java]

package edu.ojc.constructor2;

interface Emp {public abstract void gotoOffice();public abstract void getoffWork(); }[Programmer.java]

package edu.ojc.constructor2;

import org.springframework.stereotype.Service;@Serviceclass Programmer implements Emp {public void gotoOffice() {System.out.println(" .");}public void getoffWork() {System.out.println(" .");}}[Designer.java]

package edu.ojc.constructor2;import org.springframework.stereotype.Service;

@Serviceclass Designer implements Emp {public void gotoOffice() {System.out.println(" .");}public void getoffWork() {System.out.println(" .");}}

14

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-4. (Constructor Injection)

[Develop.java]

package edu.ojc.constructor2;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Service;@Servicepublic class Develope {Emp emp;@Autowiredpublic Develope(@Qualifier(value="programmer") Emp emp) {this.emp = emp;}void coding() {emp.gotoOffice();System.out.println("...");emp.getoffWork();}}

15

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-4. (Constructor Injection)

[Src/main/resources/ojc4.xml]

16

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-4. (Constructor Injection)

[TestMain.java]

package edu.ojc.constructor2;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestMain {public static void main(String[] args) { ApplicationContext context =new ClassPathXmlApplicationContext("ojc4.xml"); Develope dev = (Develop)context.getBean("develope"); dev.coding();}}

17

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-5. (Method Injection)

: Method Bean Method Replace Getter Injection .

Method Replace( ) : Getter Injection( ) : spring Context . Method Method ( abstract) Spring Context 2-5-5-1. Method Injection(Method Replace)[Emp.java]

package ojc1;public interface Emp {public String work();}[Programmer.java]

package ojc1;public class Programmer implements Emp {public String work() {return "Programmer Working...";}}

18

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-5. (Method Injection)

2-5-5-1. Method Injection(Method Replace)[Designer.java]

package ojc1;import java.lang.reflect.Method;import org.springframework.beans.factory.support.MethodReplacer;import org.springframework.stereotype.Service;public class Designer implements MethodReplacer {public Object reimplement(Object target, Method method, Object[] args) throws Throwable { return "Designer Working..."; }}[MethodReplaceTest.java]

package ojc1;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MethodReplaceTest {Emp programmer;public void setProgrammer(Programmer programmer) { this.programmer = programmer;}public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("lookup.xml"); MethodReplaceTest test = (MethodReplaceTest) context.getBean("methodReplaceTest"); //Programmer work() Designer work() System.out.println(test.programmer.work()); }}

19

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-5. (Method Injection)

2-5-5-1. Method Injection(Method Replace)[/src/main/resources/lookup.xml]

20

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-5. (Method Injection)

2-5-5-2. Method Injection(Getter Injection)[/src/main/resources/lookup.xml]

21

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-5. (Method Injection)

2-5-5-2. Method Injection(Getter Injection)[EmpTest.java]

package ojc2;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class EmpTest { public static void main(String[] args) throws Exception{ ApplicationContext ctx = new ClassPathXmlApplicationContext("emp.xml"); Emp emp = (Emp) ctx.getBean("emp"); emp.work(); }}

22

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-6. Simple Value Injection

[XML]

onj

6

XML property value String .property value setter .[ ]

private String name;private String age;// XML name Property value public void setName(String name) { this.name = name; }// XML age Property value public void setAge(String age) { this.age = age; }

23

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-7. SpEL Value Injection(XML )

Spring 3.X SpEL Spring Application Context . .[app-context2.xml]

#{onj.name}

#{onj.age}

24

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-7. SpEL Value Injection(XML )

Spring 3.X SpEL Spring Application Context . .[Onj.java]

package onj.spel.injection;public class Onj { private String name="OnJ"; private String age = "10";/*app-context2.xml SpelInjectionExam getter #{onj.name} getter SpelInjectionExam .*/ public String getName() { return name; } public String getAge() { return age; }}

25

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-7. SpEL Value Injection(XML )

Spring 3.X SpEL Spring Application Context . .[SpelInjectionExam.java]

package onj.spel.injection;import org.springframework.context.support.GenericXmlApplicationContext;

public class SpelInjectionExam {private String name;private String age;// XML name Property value public void setName(String name) {this.name = name;}// XML age Property value public void setAge(String age) {this.age = age;}// XML age Property value public void setAge(String age) {this.age = age;}public String toString() {return "This is spel injection example... " + "Your name is " + name + " age is " + age;}public static void main(String[] args) {GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();ctx.load("classpath:app-context2.xml");ctx.refresh();SpelInjectionExam sample = (SpelInjectionExam) ctx.getBean("sample");System.out.println(sample);}}

[]This is spel injection example... Your name is OnJ age is 10

26

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-8. SpEL Value Injection( )

[app-context3.xml]

27

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-8. SpEL Value Injection( )

[Onj.java]

package onj.spel.injection;public class Onj {

private String name="OnJ"; private String age = "10";/*app-context2.xml SpelInjectionExam getter #{onj.name} getter SpelInjectionExam .*/ public String getName() { return name; } public String getAge() { return age; }}

28

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-8. SpEL Value Injection( )

[SpelInjectionExam.java]

package onj.spel.annotation;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.support.GenericXmlApplicationContext;import org.springframework.stereotype.Service;@Service("sample")public class SpelInjectionExam {private String name;private String age;/* Onj getName */@Value("#{onj.name}")public void setName(String name) {this.name = name;}/* Onj getAge */@Value("#{onj.age}")public void setAge(String age) {this.age = age;}public String toString() {return "This is spel injection example... " + "Your name is " + name + ", age is " + age;}public static void main(String[] args) {GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();ctx.load("classpath:app-context3.xml");ctx.refresh();SpelInjectionExam sample = (SpelInjectionExam) ctx.getBean("sample");System.out.println(sample);}}[]This is spel injection example... Your name is OnJ age is 10

29

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-9. ref Value Injection(ref local, ref bean, id, name )

, . setter . ( .) XML bean .ref ref property constructor-arg .[app-context4.xml]

30

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-9. ref Value Injection(ref local, ref bean, id, name )

[Onj.java]

package onj.ref.injection;public class Onj {private String name="OnJ";private String age = "10";public String getName() {return name;}public String getAge() {return age;}}[RefInjectionExam.java]

package onj.ref.injection;import org.springframework.context.support.GenericXmlApplicationContext;public class RefInjectionExam {private Onj onj;public void setOnj(Onj onj) { this.onj = onj;}public String toString() {return "This is ref injection example... " + "Your name is " + onj.getName() + ", age is " +onj.getAge();}public static void main(String[] args) {GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();ctx.load("classpath:app-context4.xml");ctx.refresh();RefInjectionExam sample = (RefInjectionExam) ctx.getBean("sample");System.out.println(sample);}}

31

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-9. ref Value Injection(ref local, ref bean, id, name )

bean vs local

1. , / Bean Factory or Application Context , XML . onj Bean id, name .2. XML onjBean onjBean bean id, name . Spring4 local . 4 . id name

id or bean XML ()id , name . Foo f1 = (Foo) context.getBean("foo"); Foo f2 = (Foo) context.getBean("foo1"); Foo f3 = (Foo) context.getBean("foo2"); name . id .1. [bean1.xml]

2. [bean2.xml]

FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext(new String[] { "beans2.xml", "beans1.xml" });Foo f = (Foo) context.getBean("king");bean1.xml bean1.xml king .

32

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-10. XML : XML ref bean . Application Context XML .[Dog.java]

package ojc.spring.twoxml;public interface Dog {public void jitda();}[Jindo.java]

package ojc.spring.twoxml;import org.springframework.stereotype.Component;public class Jindo implements Dog{public void jitda() {System.out.println("~");}}[Pudle.java]

package ojc.spring.twoxml;import org.springframework.stereotype.Component;public class Pudle implements Dog {public void jitda() {System.out.println("~");} }

33

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-10. XML [DogManager.java]

package ojc.spring.twoxml;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;public class DogManager {private Pudle pudle;private Jindo jindo;public void setPudle(Pudle pudle) {this.pudle = pudle;}public void setJindo(Jindo jindo) {this.jindo = jindo;}public void walwal() {this.jindo.jitda();this.pudle.jitda();}}[DogApp.java]

package ojc.spring.twoxml;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class DogApp {public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml", "dog.xml"});DogManager dManager = (DogManager) context.getBean("dogManager");dManager.walwal();}}

34

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-10. XML [DogManager.java] [src/main/resources/applicationContext.xml]

[src/main/resources/dog.xml]

[]

~~

35

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-11. Application Context (, ): . ApplicationContext . . ref parent .[parent.xml]

parent bean 1

parent bean 2

36

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-11. Application Context (, )[child.xml]

child bean 2

[Onj.java]

package onj.context.overlap;public class Onj {private String val1;private String val2;public String getVal1() {return val1;}public void setVal1(String val1) {this.val1 = val1;}public String getVal2() {return val2;}public void setVal2(String val2) {this.val2 = val2;}}

37

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-11. Application Context (, )[ContextOverlapExam.java]

package onj.context.overlap;import org.springframework.context.support.GenericXmlApplicationContext;public class ContextOverlapExam {public static void main(String[] args) {GenericXmlApplicationContext parent = new GenericXmlApplicationContext();parent.load("classpath:parent.xml");parent.refresh();GenericXmlApplicationContext child = new GenericXmlApplicationContext();child.load("classpath:child.xml");child.setParent(parent);child.refresh();Onj target1 = (Onj) child.getBean("target1");Onj target2 = (Onj) child.getBean("target2");String target3 = (String) child.getBean("parent2");System.out.println(target1.getVal1());System.out.println(target2.getVal2());System.out.println(target3);}}

38

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-12. (Collection Injection), XML [app-context5.xml]

hello map...: . ApplicationContext . . ref parent .

hello list...

Jong Cheol Lee

39

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-12. (Collection Injection), XML [CollectionExam.java]

public void display() {for(Map.Entry entry:map.entrySet()) { System.out.println("Key: " + entry.getKey() + "-" + entry.getValue());}for(Map.Entry entry : props.entrySet()) { System.out.println("key : " + entry.getKey() + "-" + entry.getValue() );}for(Object obj : set) { System.out.println("value : " + obj);}}public static void main(String[] args) {GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();ctx.load("classpath:app-context5.xml");ctx.refresh();CollectionExam col = (CollectionExam)ctx.getBean("sample)col.display();}

40

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-12. (Collection Injection), [app-context6.xml]

Jong CheolLee

hello.... set

41

2. Spring IoC & DI

2-5. Spring DI(Dependency Injection)

2-5-12. (Collection Injection), [Onj.java]

package onj.collection.annotation;import org.springframework.stereotype.Service;@Service("onj")public class Onj {public String toString() {return "my name is OnJ";}}[CollectionAnnotationExam.java]

@Service("sample")public class CollectionAnnotationExam {@Resource(name="map")private Map map ;@Resource(name="props")private Properties props;@Resource(name="set")private Set set;

42

Any Questions ?THANK YOU FOR YOUR ATTENTION / _ http://www.topcredu.co.kr