🌷 자바와 MySQL 연결시켜주기
[ 1번째 방법 ]

mysql-connector-j-9.5.0.jar 파일 추가하기
[ 2번째 방법 ]

버전 정보를 알려주지 않아도 호환이 잘 되는 버전을 알아서 넣어준다
🌷 의존성 주입(DI, Dependency Injection) 🌷
의존성 : A 코드없이 B 코드가 동작할 수 없어요. B 코드는 A 코드에게 의존하고 있는 상황
🌷 의존성 주입 방법 🌷
1) 생성자 인젝션 ➡ IPhone
[ test05 : IPhone ]
소리를 높이는데 휴대폰이 아닌 워치로 올리려고 함
아이폰이 워치를 갖고 있어야 하는 상황
멤버 변수를 워치를 하나 선언함
그런데 기능이 작동할까? new를 아직 안해서 실체 부여가 안 된 상태
그래서 watch = new AppleWatch()를 해줘야 하는데
워치를 한 번 사용하고 버리고를 반복하고 있다 = 볼륨을 올리고 시계를 버리고 또 구매하고 버리고...
아이폰 = 컨트롤러
워치 = DAO
컨트롤러가 데이터베이스한테 CRUD를 시키고 싶은데 자기가 안하고 DAO를 통해서 했던 것이다
하지만 내가 계속 사용을 하지 않고 DAO를 계속 생성, 폐기를 반복했던 것이다
정리 :
내가 어떤 행동을 하고 싶은데 그 행동을 위임한 것이다
이 행동 수행을 위해서는 무조건 new를 해야 한다
정확한 지점에서 했어도 좋은 구조는 아니다 (사고 버림 반복)
[ test06 : 위의 문제 해결]
위에서의 근본 문제는 무조건 생성자로 초기화를 했어야 하는데 그냥 사용 전에 했다는 점이다
(멤버 변수가 생겼는데 멤버변수 초기화를 해주는 생성자가 없다는 점)
그래서 생성자에 넣었지만 new가 있다는 점이 문제이다
new가 우리 눈에 보이면 안됨
IPhone을 사는 행위 watch를 사는 행위가 달라야 하는데 둘 다 같이 사고 있다
아이폰 살거야? 워치도 같이 사
new를 지우고 this.watch = watch로 바꾸어 나 워치 있어~ 뉘앙스로 변경한다

이때 딱 의존성이 발생된다.
시계 종류를 여러 가지로 할 것이기 때문에 interface에서 watch를 만들었다
문제점
1. xml 보고 스프링 컨테이너가 new 할 때 기본 생성자를 활용
2. watch 객체가 없음
<constructor-arg> : 생성자 인자
생성자 인자에 있는 거 사용할거야 하고 알려줘야 함
자료형 기제 안해도 됨 = 컨테이너가 인지하고 있음
멤버변수가 있는데 메서드에서 new 함
생성자에서 new함
안되지
인자로 받아야지 하는 순간 의존성 발생
의존성 주입을 생성자로 함 생성자 주입해야지
스프링 컨테이너한테 알려주면 됨
자료형은 내부적으로 관리함
나는 인자와 순서를 잘 맞춰서 작성해주면 됨

아이폰을 만들려면 의존성 때문에 워치가 필요함
그래서 워치가 먼저 생성되고 아이폰이 생성됨
but 이 xml을 개발자가 신경 쓰지 않아도 됨
xml을 에러개
기본생성자를 파서 로그를 찍고 xml을 하나 돌릴 때마다 확인을 하자
xml은 에러 메시지를 자세하게 안알려주기 때문에
생성 순서가 막히면 골치아파짐
2) setter 인젝션 : GalaxyPhone
볼륩 업 다운을 워치로 하는 상황
setter를 통해 주입하고 있다
생성자가 따로 안보인다? ➡ 기본으로 제공되는 기본 생성자를 사용한다~
.xml에 galaxy 객체를 생성하고
생성자 주입과 setter의 차이점
생성자 주입 : 워치가 없으면 아이폰을 생성할 수 없음. 워치없이 아이폰 생성 안됨
setter : 워치가 없어도 아이폰(갤럭시)를 생성할 수 있음
watch라는 멤버변수가 있는데 거기에 애플워치를 넣겠습니다~ 하고 멤버변수 이름을 작성해줘야 한다
생성자 주입은 애플워치가 없으면 아이폰이 생성이 안된다.
객체 생성을 연속으로 2번 같이해도
생성자 주입은 강제성이 있기 때문에 바로 안나올 수도 있다
'🍃 Spring' 카테고리의 다른 글
| @Component 계열 어노테이션 [ @Component | @Repository | @Service | @Controller ] (0) | 2026.01.14 |
|---|---|
| .xml 대신 @ (어노테이션) 사용해보자! (0) | 2026.01.14 |
| MySQL 설치하기 ( Workbench 툴 사용 ) (0) | 2026.01.13 |
| 🌺 Spring 시작하기.. 구조와 원리 (init-method="initMethod") (0) | 2026.01.13 |
| 🌺 Spring 시작하기.. 구조와 원리 (applicationContext.xml 설정 파일) (0) | 2026.01.13 |