🌞 Day 073
- Spring Frmaework, Bean,
@Autowired
🌙 용어 정리
객체조립
- 객체가 완성되기 위해서 다른 객체의 전달을 요구하는 상태 : 의존
- 그 의존을 위해 객체가 제공되는 동작 : 의존 주입 ≒ 객체조립
🌈 sp04 : Student
🌙 DB : table 생성
create table student(
sNum varchar2(20),
sId varchar2(20),
sPw varchar2(20),
sName varchar2(20),
sAge number(3),
sGender varchar2(20),
sMajor varchar2(80)
);
🌙 DB 연결 ⇒ pom.xml에 설정

🌙 class Student

🌙 class StudentInsertService

🌙 class Dbman

🌙 class DatabaseConnectionInfo

🌙 class StudentSelectAllService
- 모든 학생을 조회하는 service

🌙 class StudentSelectOneService
- 학생 한 명을 조회하는 service

🌙 class StudentUpdateService
- 학생 정보를 수정하는 service

🌙 MainClass
- 가장 먼저 만들었지만 service가 계속 추가되면서 코드 작성이 진행되었기 때문에 dao, bean 컨테이너와 같이 아래쪽에 정리하였음
- 이번 코드 작성 순서
Main에서 필요한 Service 생성 ⇒ Service작성(dao메서드 호출)
⇒ Dao에 호출한 메서드 작성 ⇒ 컨테이너에 Bean 생성

🌙 StudentDao
- Dao 생성
: 웹 X, 응용프로그램(사용자=1) ⇒ 싱글톤 사용 X

🌙 applicationContext.xml

- bean에 다양한 자료형의 property 넣기위한 연습용 객체

🌈 Sp05 : WordSet
@Autowired
: 자동 주입
- ' 근데, Annotation이 대체 뭔데...... 😭 '
- Sp04에서 의존 상태인 객체에 직접 의존주입 or 객체주입을 했다면 Sp05에서는 Autowired라는 annotation을 이용하여 자동 주입이 되는 방식을 배워본다.
Autowired 란?
- 필요한 의존 객체의 “타입"에 해당하는 빈을 찾아 주입하는 것
- 스프링 컨테이너에 등록한 빈에게 의존관계주입이 필요할 때, DI(의존성 주입)을 도와주는 어노테이션
🌙 class WordDto

🌙 class DataBaseUserInfo
- 얘부터 시작 이 클래스는 DB의 정보를 제공하는 클래스 Dbman이 요구하는 객체로 쓰일 예정

🌙 appCtx.xml
- Autowired를 사용하려면 컨테이너의 설정 코드가 Sp04에서 사용하던 것과 달라지고 추가되는 것도 있음. (좀 더 길어짐)
- 그래서 Autowired가 쓰이기 전에 먼저 컨테이너를 정리

🌙 class Dbman
- DataBaseUserInfo가 필요한 클래스이다.
Sp04에서처럼 전달인수로 받는 생성자를 만들지 않고 멤버변수에 @Autowired
만 써서 객체조립이 되도록 할 수 있다.

🌙 class WordInsertService
- WordDao의 객체가 요구되는 클래스이다.
- #1은 생성자에
@Autowired
를 붙인 방식이고,
#2는 멤버 변수에 붙인 방식이다.
@Autowired
를 사용하는 방식은 3가지가 있다
생성자주입, 수정자주입(setter에 표시), 필드주입(변수에 표시)
생성자주입(#1)이 가장 권장되는 방식이라고 한다.
(검색해서 공부한 바로는...)

🌙 class WordDao

🌙 MainClass

⭐ 정리
- Sp05는 작성 도중 수업이 끝나서 내일 이어서 service를 더 추가할 예정
- Autowired가 잘 이해가 안되어서 검색으로 공부했지만 아직 완전히 이해하지는 못한 것 같음
- Annotation부터 개념을 잡아야 할 듯