스프링으로 DB를 다루기위해, TDD코드에 테이블에 회원 정보를 추가하는 메소드를 만들고 매개변수로 User를 주었기 때문에 User클래스를 만들어준다(테이블의 컬럼과 똑같이 만들어준다) 그리고나서 insertUser메소드를 만들어준 뒤 Test코드로 insertUserTest()코드를 만들어준다. public class DBConnectionTest2Test { @Autowired DataSource ds; @Test public void insertUserTest() throws Exception{ User user = new User("kim","1234","abc","aaa@aaa.com",new Date(),"fb",new Date()); int rowCnt=insertUser(user); as..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEAoo8%2Fbtr6A0NuTtm%2FZhlkKTtUnkAUG4Af1TkrJ0%2Fimg.png)
package com.fastcampus.ch3; import java.sql.*; public class DBConnectionTest { public static void main(String[] args) throws Exception { // 스키마의 이름(springbasic)이 다른 경우 알맞게 변경해야 함 String DB_URL = "jdbc:mysql://localhost:3306/springbasic?useUnicode=true&characterEncoding=utf8"; // DB의 userid와 pwd를 알맞게 변경해야 함 String DB_USER = "hyerin"; String DB_PASSWORD = "hyerin"; Connection conn = DriverManager...
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu53n0%2Fbtr5DTullil%2FtLbvcSUGy4nJgIJFKmcih1%2Fimg.png)
Inversion of Flow Control Flow : if / for 즉, 실행 흐름이 바뀌는 것 전통적인 방식 다른 사람이 만든 라이브러리를 단순히 호출하는 것 잘 변하는 코드 부분(아랫 부분) IOC 호출을 하긴 하긴 하지만, 사용자가 제공한 코드(new SuperEngine)를 라이브러리에서 호출 잘 변하지 않는 코드 부분 (즉, 변하는 코드를 잘 변하지 않는 코드로 분리해냈다) 다른 사람이 만든 코드가 내 코드를 호출한다 (문장이 실행되는 순서를 뒤집었다) DI new SuperEngine을 Engine engin에 수동 주입 (사용할 객체를 외부에서 주입하고 있는 것) IOC 패턴에 DI가 적용되는 것이다. (전략 패턴 : 내가 원하는대로 전략을 바꿀 수 있다) library는 단순히 기능..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFVVot%2Fbtr5t8Tt4i3%2FbS0tbjsh9vv8e0hb6tQTi0%2Fimg.png)
자바빈즈부터 시작.. 자바가 서버쪽에서 각광을 받고, 화면에 안보여지는 쪽에서 Bean을 쓰게 됨 MVC에서 모델 역할을 하고(데이터 전달할 때), EL, Scope에서 쓰임.. - JSP container가 관리 EJB가 나옴 -> EJP Container가 관리 관리란? 빈을 생성하고 소멸시키는 것 Spring Bean --> EJB의 복잡한 규칙을 단순하게 만든 것, 단순/독립적 - Spring Container가 관리 스프링 컨테이너(Spring Container) 스프링에서 의존관계 주입(Dependency Injection, DI)을 이용하여 애플리케이션을 구성하는 여러 빈(Bean)들의 생명주기(Lifecycle)와 애플리케이션의 서비스 실행 등을 관리하며 생성된 인스턴스들에게 기능을 제공하..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcXiev%2Fbtr5pyYARSP%2F0LZlQm125mKKukYC0xggMK%2Fimg.png)
resource > xml 파일 만들어주기 config.xml SpringDiTest.java package com.fastcampus.ch3; import org.springframework.context.ApplicationContext; import org.springframework.context.support.GenericXmlApplicationContext; class Car{} class Engine{} class Door{} public class SpringDiTest { public static void main(String[] args) { ApplicationContext ac = new GenericXmlApplicationContext("config.xml"); Car car ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjhcKp%2Fbtr5e6bBeP5%2FduwKVfYqahS8EVbf9YlEIk%2Fimg.png)
객체 찾기 1. 이름으로 찾기 - Map의 Key로 찾기 (객체 주소 반환) 2. 타입으로 찾기 - Map의 Value로 찾기 (객체 반환) Object getBean(String key){ return map.get(key); } //By Type 검색 Object getBean(Class clazz) { for (Object obj : map.values()) { //map의 모든 value를 가져와서 if (clazz.isInstance(obj)) //obj가 class의 객체거나 자손이면 true가 됨 return obj; } return null; } } public class Main3 { public static void main(String[] args) throws Exception { ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdvYJyt%2Fbtr5cSqdL2Y%2FafwdN9QoFtgMBBa1W47rpK%2Fimg.jpg)
package com.fastcampus.ch3.diCopy3; import com.google.common.reflect.ClassPath; import org.springframework.util.StringUtils; import org.springframework.stereotype.Component; import java.awt.*; import java.io.FileReader; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Properties; import java.util.Set; @Component class Car{} @Component class SportsCar e..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlztLh%2Fbtr4Prtyzu3%2FvUFDY2mvqnIjQsZeuXY5Hk%2Fimg.png)
Oracle JDK version 19.0.2 선택 개선된 Main3 코드 package com.fastcampus.ch3.diCopy3; import com.google.common.reflect.ClassPath; import org.springframework.util.StringUtils; import org.springframework.stereotype.Component; import java.awt.*; import java.io.FileReader; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Properties; import java.util.Set; @Componen..