Spring Framework
Spring DI
(Dependency Injection_1)
Spring Framework_Spring Ioc & DI
Spring IoC & DI
5. Spring DI
1) 세터 주입 _ XML 기반
 세터 주입은 클래스 사이의 의존관계를 연결시키기 위해 setter 메소드를 이용하는 방법이다.
package edu.ojc.setter1;
interface Emp {
public abstract void gotoOffice();
public abstract void getoffWork();
}
[Emp.java]
Spring Framework_Spring Ioc & DI
package edu.ojc.setter1;
class Programmer implements Emp {
public void gotoOffice() {
System.out.println("프로그래머출근합니다.");
}
public void getoffWork() {
System.out.println("프로그래머퇴근합니다.");
}
}
[Programmer.java]
package edu.ojc.setter1;
class Designer implements Emp {
public void gotoOffice() {
System.out.println("디자이너출근합니다.");
}
public void getoffWork() {
System.out.println("디자이너퇴근합니다.");
}
}
[Designer.java]
Spring Framework_Spring Ioc & DI
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();
}
}
[Develop.java]
Spring Framework_Spring Ioc & DI
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="programmer" class="edu.ojc.setter1.Programmer" />
<bean id="designer" class="edu.ojc.setter1.Designer" />
<bean id="develope" class="edu.ojc.setter1.Develope"p:emp-ref="programmer"/>
<!--
//아래처럼Property 태그를이용해도된다.
<bean id="develope" class="edu.ojc.setter1.Develope">
<property name="emp“><ref bean="programmer"/></property>
</bean>
<bean id="develope" class="edu.ojc.setter1.Develope">
<property name="emp" ref="programmer"/> </bean>
-->
</beans>
[Src/main/resources/ojc1.xml]
Spring Framework_Spring Ioc & DI
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();
}
}
[TestMain.java]
Spring Framework_Spring Ioc & DI
2) 세터 주입 _ 어노테이션 기반
package edu.ojc.setter2;
interface Emp {
public abstract void gotoOffice();
public abstract void getoffWork();
}
[Emp.java]
package edu.ojc.setter2;
import org.springframework.stereotype.Service;
@Service
class Programmer implements Emp {
public void gotoOffice() {
System.out.println("프로그래머출근합니다.");
}
public void getoffWork() {
System.out.println("프로그래머퇴근합니다.");
}
}
[Programmer.java]
Spring Framework_Spring Ioc & DI
package edu.ojc.setter2;
import org.springframework.stereotype.Service;
@Service
class Designer implements Emp {
public void gotoOffice() {
System.out.println("디자이너출근합니다.");
}
public void getoffWork() {
System.out.println("디자이너퇴근합니다.");
}
}
[Designer.java]
Spring Framework_Spring Ioc & DI
package edu.ojc.setter2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
@Service
public class Develope {
Emp emp;
@Autowired
@Qualifier("programmer")
public void setEmp(Emp emp) {
this.emp = emp;
}
void coding() {
emp.gotoOffice();
System.out.println("개발합니다...");
emp.getoffWork();
}
}
[Develop.java]
Spring Framework_Spring Ioc & DI
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-
context-4.2.xsd">
<context:component-scan base-package="edu.ojc.setter2"/>
</beans>
[Src/main/resources/ojc2.xml]
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();
}
}
[TestMain.java]
Spring Framework_Spring Ioc & DI
3) 생성자 주입 _ XML 기반
package edu.ojc.constructor1;
interface Emp {
public abstract void gotoOffice();
public abstract void getoffWork();
}
[Emp.java]
package edu.ojc.constructor1;
class Programmer implements Emp{
public void gotoOffice() {
System.out.println("프로그래머출근합니다.");
}
public void getoffWork() {
System.out.println("프로그래머퇴근합니다.");
}
}
[Programmer.java]
Spring Framework_Spring Ioc & DI
package edu.ojc.constructor1;
class Designer implements Emp {
public void gotoOffice() {
System.out.println("디자이너출근합니다.");
}
public void getoffWork() {
System.out.println("디자이너퇴근합니다.");
}
}
[Designer.java]
Spring Framework_Spring Ioc & DI
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();
}
}
[Develop.java]
Spring Framework_Spring Ioc & DI
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="programmer" class="edu.ojc.constructor1.Programmer" />
<bean id="designer" class="edu.ojc.constructor1.Designer" />
<bean id="develope" class="edu.ojc.constructor1.Develope" c:emp-ref="programmer" />
<!--
<bean id="develope" class="edu.ojc.constructor1.Develope">
<constructor-arg ref="programmer"/>
</bean>
-->
</beans>
[Src/main/resources/ojc3.xml]
Spring Framework_Spring Ioc & DI
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();
}
}
[TestMain.java]
Spring Framework_Spring Ioc & DI
4) 생성자 주입 _ 어노테이션 기반
package edu.ojc.constructor2;
interface Emp {
public abstract void gotoOffice();
public abstract void getoffWork();
}
[Emp.java]
package edu.ojc.constructor2;
import org.springframework.stereotype.Service;
@Service
class Programmer implements Emp {
public void gotoOffice() {
System.out.println("프로그래머출근합니다.");
}
public void getoffWork() {
System.out.println("프로그래머퇴근합니다.");
}
}
[Programmer.java]
Spring Framework_Spring Ioc & DI
package edu.ojc.constructor2;
import org.springframework.stereotype.Service;
@Service
class Designer implements Emp {
public void gotoOffice() {
System.out.println("디자이너출근합니다.");
}
public void getoffWork() {
System.out.println("디자이너퇴근합니다.");
}
}
[Designer.java]
Spring Framework_Spring Ioc & DI
package edu.ojc.constructor2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
@Service
public class Develope {
Emp emp;
@Autowired
public Develope(@Qualifier(value="programmer")Emp emp) {
this.emp = emp;
}
void coding() {
emp.gotoOffice();
System.out.println("개발합니다...");
emp.getoffWork();
}
}
[Develop.java]
Spring Framework_Spring Ioc & DI
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context=http://www.springframework.org/schema/context
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-
context-4.2.xsd">
<context:component-scan base-package="edu.ojc.constructor2"/>
</beans>
[Src/main/resources/ojc4.xml]
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();
}
}
[TestMain.java]

6.Spring DI_1

  • 1.
  • 2.
    Spring Framework_Spring Ioc& DI Spring IoC & DI 5. Spring DI 1) 세터 주입 _ XML 기반  세터 주입은 클래스 사이의 의존관계를 연결시키기 위해 setter 메소드를 이용하는 방법이다. package edu.ojc.setter1; interface Emp { public abstract void gotoOffice(); public abstract void getoffWork(); } [Emp.java]
  • 3.
    Spring Framework_Spring Ioc& DI package edu.ojc.setter1; class Programmer implements Emp { public void gotoOffice() { System.out.println("프로그래머출근합니다."); } public void getoffWork() { System.out.println("프로그래머퇴근합니다."); } } [Programmer.java] package edu.ojc.setter1; class Designer implements Emp { public void gotoOffice() { System.out.println("디자이너출근합니다."); } public void getoffWork() { System.out.println("디자이너퇴근합니다."); } } [Designer.java]
  • 4.
    Spring Framework_Spring Ioc& DI 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(); } } [Develop.java]
  • 5.
    Spring Framework_Spring Ioc& DI <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="programmer" class="edu.ojc.setter1.Programmer" /> <bean id="designer" class="edu.ojc.setter1.Designer" /> <bean id="develope" class="edu.ojc.setter1.Develope"p:emp-ref="programmer"/> <!-- //아래처럼Property 태그를이용해도된다. <bean id="develope" class="edu.ojc.setter1.Develope"> <property name="emp“><ref bean="programmer"/></property> </bean> <bean id="develope" class="edu.ojc.setter1.Develope"> <property name="emp" ref="programmer"/> </bean> --> </beans> [Src/main/resources/ojc1.xml]
  • 6.
    Spring Framework_Spring Ioc& DI 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(); } } [TestMain.java]
  • 7.
    Spring Framework_Spring Ioc& DI 2) 세터 주입 _ 어노테이션 기반 package edu.ojc.setter2; interface Emp { public abstract void gotoOffice(); public abstract void getoffWork(); } [Emp.java] package edu.ojc.setter2; import org.springframework.stereotype.Service; @Service class Programmer implements Emp { public void gotoOffice() { System.out.println("프로그래머출근합니다."); } public void getoffWork() { System.out.println("프로그래머퇴근합니다."); } } [Programmer.java]
  • 8.
    Spring Framework_Spring Ioc& DI package edu.ojc.setter2; import org.springframework.stereotype.Service; @Service class Designer implements Emp { public void gotoOffice() { System.out.println("디자이너출근합니다."); } public void getoffWork() { System.out.println("디자이너퇴근합니다."); } } [Designer.java]
  • 9.
    Spring Framework_Spring Ioc& DI package edu.ojc.setter2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @Service public class Develope { Emp emp; @Autowired @Qualifier("programmer") public void setEmp(Emp emp) { this.emp = emp; } void coding() { emp.gotoOffice(); System.out.println("개발합니다..."); emp.getoffWork(); } } [Develop.java]
  • 10.
    Spring Framework_Spring Ioc& DI <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring- context-4.2.xsd"> <context:component-scan base-package="edu.ojc.setter2"/> </beans> [Src/main/resources/ojc2.xml] 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(); } } [TestMain.java]
  • 11.
    Spring Framework_Spring Ioc& DI 3) 생성자 주입 _ XML 기반 package edu.ojc.constructor1; interface Emp { public abstract void gotoOffice(); public abstract void getoffWork(); } [Emp.java] package edu.ojc.constructor1; class Programmer implements Emp{ public void gotoOffice() { System.out.println("프로그래머출근합니다."); } public void getoffWork() { System.out.println("프로그래머퇴근합니다."); } } [Programmer.java]
  • 12.
    Spring Framework_Spring Ioc& DI package edu.ojc.constructor1; class Designer implements Emp { public void gotoOffice() { System.out.println("디자이너출근합니다."); } public void getoffWork() { System.out.println("디자이너퇴근합니다."); } } [Designer.java]
  • 13.
    Spring Framework_Spring Ioc& DI 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(); } } [Develop.java]
  • 14.
    Spring Framework_Spring Ioc& DI <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="http://www.springframework.org/schema/c" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="programmer" class="edu.ojc.constructor1.Programmer" /> <bean id="designer" class="edu.ojc.constructor1.Designer" /> <bean id="develope" class="edu.ojc.constructor1.Develope" c:emp-ref="programmer" /> <!-- <bean id="develope" class="edu.ojc.constructor1.Develope"> <constructor-arg ref="programmer"/> </bean> --> </beans> [Src/main/resources/ojc3.xml]
  • 15.
    Spring Framework_Spring Ioc& DI 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(); } } [TestMain.java]
  • 16.
    Spring Framework_Spring Ioc& DI 4) 생성자 주입 _ 어노테이션 기반 package edu.ojc.constructor2; interface Emp { public abstract void gotoOffice(); public abstract void getoffWork(); } [Emp.java] package edu.ojc.constructor2; import org.springframework.stereotype.Service; @Service class Programmer implements Emp { public void gotoOffice() { System.out.println("프로그래머출근합니다."); } public void getoffWork() { System.out.println("프로그래머퇴근합니다."); } } [Programmer.java]
  • 17.
    Spring Framework_Spring Ioc& DI package edu.ojc.constructor2; import org.springframework.stereotype.Service; @Service class Designer implements Emp { public void gotoOffice() { System.out.println("디자이너출근합니다."); } public void getoffWork() { System.out.println("디자이너퇴근합니다."); } } [Designer.java]
  • 18.
    Spring Framework_Spring Ioc& DI package edu.ojc.constructor2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @Service public class Develope { Emp emp; @Autowired public Develope(@Qualifier(value="programmer")Emp emp) { this.emp = emp; } void coding() { emp.gotoOffice(); System.out.println("개발합니다..."); emp.getoffWork(); } } [Develop.java]
  • 19.
    Spring Framework_Spring Ioc& DI <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context=http://www.springframework.org/schema/context xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring- context-4.2.xsd"> <context:component-scan base-package="edu.ojc.constructor2"/> </beans> [Src/main/resources/ojc4.xml] 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(); } } [TestMain.java]