728x90
728x90
ํ์ต ๋ชฉํ
1. '์์กด์ฑ ์ฃผ์ ' ๊ธฐ๋ณธ ๊ฐ๋ ์ดํด
2. ์คํ๋ง ์ปจํ ์ด๋์ ApplicationContext ์ดํด
3-1. XML ํ์ผ์ ์ด์ฉํ ์์กด์ฑ ์ฃผ์ (DI) ์ค์ ๋ฐฉ๋ฒ
3-2. Annotation์ ์ด์ฉํ ์์กด์ฑ ์ฃผ์ (DI) ์ค์ ๋ฐฉ๋ฒ
3-3. Java๋ฅผ ์ด์ฉํ ์์กด์ฑ ์ฃผ์ (DI) ์ค์ ๋ฐฉ๋ฒ
4. Bean ๊ฐ์ฒด์ Scope์ LifeCycle ์ดํด
XML ๊ธฐ๋ฐ DI ๊ตฌ์ฑ
ํ๋ก์ ํธ ์์ฑ ๋ฐ ํ๊ฒฝ
ํ๋ก์ ํธ ๊ตฌ์ฑ๋
ํ๋ก์ ํธ ์์ฑ
ํ๋ก์ ํธ ํ๊ฒฝ ์์
Java ๋ฒ์ ๋ณ๊ฒฝ
์์กด์ฑ ์ถ๊ฐ ๋ฐ ๋ณ๊ฒฝ (pom.xml)
- spring-context → ์คํ๋ง ํ๋ ์์ํฌ ๋ฒ์ ์ ์ฉ (mvnrepositroy.com ์ฐธ๊ณ )
- ๋ก๊น ํ๋ ์์ํฌ ์ ์ฉ → slf4j-api, logback-classic ์ ์ฉ
applicationContext.xml ์์ฑ
- Spring Bean Configuration File๋ก applicationContext.xml ํ์ผ ์์ฑ
- Namespace ์ถ๊ฐ → beans, c, context ์ถ๊ฐ
- beans : Bean ์ปดํฌ๋ํธ ์ค์
- c : ์์ฑ์ ์ธ์๋ฅผ <bean> ์์ ์ ํธ๋ฆฌ๋ทฐํธ๋ก ์ ์ธ
- context : Bean ๊ฒ์๊ณผ ์ด๋ ธํ ์ด์ ์ค์
XML ๊ธฐ๋ฐ DI ํ๋ก์ ํธ ์์ค์ฝ๋
StudentVO.java
package org.kpu.di.domain;
import lombok.Data;
import lombok.ToString;
@Data
@ToString
public class StudentVO {
private String id;
private String passwd;
private String username;
private String snum;
private String depart;
private String mobile;
private String email;
}
MemberSampleMain.java
package org.kpu.di.main;
import org.kpu.di.domain.StudentVO;
import org.kpu.di.service.MemberService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MemberSampleMain {
private static ApplicationContext ctx = null;
public static void main(String[] args) {
System.out.println("์๋
ํ์ธ์ DI-XML");
// ์คํ๋ง ์ปจํ
์ด๋ ์์ฑ
ctx = new GenericXmlApplicationContext("classpath:applicationContext.xml");
// ์คํ๋ง ์ปจํ
์ด๋์์ ์ปดํฌ๋๋ ๊ฐ์ ธ์ด
MemberService memberService = (MemberService) ctx.getBean("memberSerivce");
StudentVO vo = new StudentVO();
vo.setId("kandara");
StudentVO member = new StudentVO();
System.out.println(member);
}
}
MemberDAO.java
package org.kpu.di.persistence;
import org.kpu.di.domain.StudentVO;
public interface MemberDAO {
public StudentVO read(String id) throws Exception;
public void add(StudentVO student) throws Exception;
}
MemberDAOImpl.java
package org.kpu.di.persistence;
import java.util.HashMap;
import java.util.Map;
import org.kpu.di.domain.StudentVO;
public class MemberDAOImpl implements MemberDAO {
private Map<String, StudentVO> storage = new HashMap<String, StudentVO>();
public StudentVO read(String id) throws Exception {
return storage.get(id);
}
public void add(StudentVO student) throws Exception {
storage.put(student.getId(), student);
}
}
MemberService.java
package org.kpu.di.service;
import org.kpu.di.domain.StudentVO;
public interface MemberService {
public StudentVO readMember(String userid) throws Exception;
public void addMember(StudentVO student)throws Exception;
}
MemberServiceImpl.java
package org.kpu.di.service;
import org.kpu.di.domain.StudentVO;
import org.kpu.di.persistence.MemberDAO;
public class MemberServiceImpl implements MemberService {
private MemberDAO memberDAO;
public MemberServiceImpl(MemberDAO memberDAO) {
this.memberDAO = memberDAO;
}
public StudentVO readMember(String userid) throws Exception {
return memberDAO.read(userid);
}
public void addMember(StudentVO student) throws Exception {
memberDAO.add(student);
}
}
์์กด์ฑ ์ฃผ์ ๋ฐฉ์
์์ฑ์ ๊ธฐ๋ฐ ์์กด์ฑ ์ฃผ์
- ์์ฑ์์ ์ธ์๋ฅผ ์ฌ์ฉ
- ์ค์ ํ์ผ XML์ <costructor-arg> ํ๊ทธ๋ฅผ ์ฌ์ฉํด ์ฃผ์ ํ ์ปดํฌ๋ํธ ์ค์
์ค์ ์ ๊ธฐ๋ฐ ์์กด์ฑ ์ฃผ์
- ๋ฉ์๋์ ์ธ์๋ฅผ ์ฌ์ฉ
- ์ค์ ํ์ผ XML์ <property> ์์์ name ์์ฑ์ ์ฃผ์ ํ ์ปดํฌ๋ํธ์ ์ด๋ฆ์ ์ค์
bean ํ๊ทธ์ ์์ฑ
- id : ์ค๋ธ์ ํธ ์๋ณ id
- name : ์ค๋ธ์ ํธ ๋ช
- class : id์ ์ค์ฒด๋ก ํจํค์ง๋ช ๊ณผ ํด๋์ค๋ช ์ผ๋ก ๊ตฌ์ฑ
- scope : ์ค๋ธ์ ํธ ์ค์ฝํ ์ง์
- parent : ์ค์ ์ ๋ฌผ๋ ค๋ฐ์ ์ค๋ธ์ ํธ๋ช ์ง์
- abstract : ์ธ์คํด์ค ์์ฑ ์ ๋ฌด (๊ธฐ๋ณธ๊ฐ : false)
- singleton : getBean ๋ฉ์๋๋ก ์ป๋ ์ธ์คํด์ค์ ์ธ์คํด์คํ (๊ธฐ๋ณธ๊ฐ : true)
- lazy-init : ์ธ์คํด์ค ์์ฑ ์ง์ฐ (๊ธฐ๋ณธ๊ฐ : false)
- depend-on : ์์กด ๊ด๊ณ์ ๋์์ด ๋๋ ์ค๋ธ์ ํธ๊ฐ ์๋์ง ๊ฒ์ฌ
- init-method : ๋ฉ์๋ ๋ช ์ ๊ธฐ์ ํด ์ธ์คํด์ค ๋ณ์์ ์ค์ ํ์ ํธ์ถ
- destroy-method : ๋ฉ์๋ ๋ช ์ ๊ธฐ์ ํด ์์คํ ์ข ๋ฃ ์ ํธ์ถ
- parent : ์ค์ ์ ๋ฌผ๋ ค๋ฐ์ ์ค๋ธ์ ํธ ๋ช ์ง์
- autowire
- no
- byName
- byType
- constructor
728x90
๋ฐ์ํ