03. DI_constructor_두 개 이상의 파라미터
·
Framework/SPRING FRAMEWORK
✅ UserService2.java 에 두개의 파라미터를 가진 생성자를 생성한다. ✅ user2.xml - num 파라미터에 두가지 값을 주입한다. 이전 방식 UserService xxx = new UserService(); 스프링방식 ✅ UserMain2.java - Ioc Container 생성 - 빈얻기 ✅ index로 특정 value값을 지정해줄 수 있다. ✅ name 생성자 파라미터명 가독성이 좋아 가장 많이 쓴다. ★ ✅ 값 이렇게 value를 따로 빼서 쓸 수도 있다.
03. DI_constructor
·
Framework/SPRING FRAMEWORK
✅ 빈 (UserService.java) 생성 후, 객체와 생성자들을 생성한다. ✅ com/config/user.xml 생성 후, 빈을 등록한다. ✅ 빈(UserService.java)에 생성자를 이용해서 원하는 내용을 작성한다. ✅ UserMain.java 생성 후, IoC Container 생성한다. ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:com/config/user.xml"); ✅ user.xml - num 파라미터에 값을 주입한다. - 을 통해 매개변수가 있는 생성자를 호출하여 값을 주입한다. - value 값은 문자도 숫자도 전부 " " 안에 작성한다. ✅ UserService.java에 get메서드 생성한다..
다양한 의존성 주입 방법 (DI)
·
Framework/SPRING FRAMEWORK
1️⃣ 생성자 주입 (Constructor Injection) 생성자를 이용한 의존관계 설정 클래스에 생성자를 지정해야 된다. 의존하는 객체를 생성자를 통해서 전달한다 방법 의존하는 객체를 전달받을 생성자를 작성한다. 설정파일에 태그를 이용하여 설정한다. 문자열이나 기본 데이터인 경우에는 태그를 사용 객체인 경우에는 태그를 사용 이전방식> UserService service = new UserService(10); //생성자 // service.num = 10; //직접접근 (권장안함) service.setNum(10); //set메서드 스프링의 생성자 이용 방식 (Constructor-based Dependency Injection) > [하나의 파라미터] [두 개 이상의 파라미터] public Use..
DI (Dependency injection)
·
Framework/SPRING FRAMEWORK
📌 Spring Core - 프레임워크의 가장 기본적인 부분 - 컨테이너 기능을 수행하기 위해 의존성 주입 기능을 제공 https://docs.spring.io/spring-framework/docs/5.2.25.RELEASE/spring-framework-reference/core.html#spring-core Core Technologies In the preceding scenario, using @Autowired works well and provides the desired modularity, but determining exactly where the autowired bean definitions are declared is still somewhat ambiguous. For examp..
ApplicationContext 계층구조
·
Framework/SPRING FRAMEWORK
📌 IoC Container라고 불리우는 ApplicationContext 계층 구조 📌 IoC (Inversion Of Control 제어의 역전) 컴포넌트 의존관계 설정, 설정, 및 생명주기를 해결하기 위한 디자인 패턴이다. 객체의 생성 및 생명주익에 대한 모든 객체의 제어권이 바뀌었다는 것을 의미한다. 즉, 필요한 객체가 있으면 내가 직접 생성해서 사용하는 것이 아니고, 외부에서 나한테 필요한 객체를 생성해서 던져준다. 타입만 일치하면 나는 받아서 사용할 수 있다. 📌 IoC 컨테이너 ▪ IoC 방법으로 빈(bean)을 관리한다는 의미에서 IoC 컨테이너라고 한다. ▪ 개발자가 직접 객체를 생성하지 않고 객체의 생성과 소멸을 컨테이너가 관리한다. 즉, 컨테이너에 객체를 담아두고 필요시 컨테이너로부터..
02. 빈 얻기
·
Framework/SPRING FRAMEWORK
✅ 빈에 리턴값이 있는 메서드 작성 ✅ xml에 빈등록 ✅ 스프링 컨테이너에서 객체를 얻어와야하는데 먼저 컨테이너에 접근 해야하므로 GenericXmlApplicationContext 객체를 통해 user.xml에 있는 설정을 읽어온다. 1️⃣ .getBean("id값"); => xml에 등록된 bean태그의 id 값을 이용해서 빈을 참조한다. => id값만 던지면 Object 타입으로 리턴하므로 형변환을 해주어야 한다. 👉 권장하지 않는다. UserDAO userDAO = (UserDAO)ctx.getBean("yyy"); // .getBean("id값"); 권장안함 2️⃣ .getBean("id값", 클래스명.class); ⭐⭐⭐ => 매개변수로 BeanName+Class 를 던지므로 보다 명확하게 ..
01. 빈 생성_prefix
·
Framework/SPRING FRAMEWORK
✅ 만들어져 있는 xml을 폴더에 복사해두고 ✅ 삭제해보자 ✅ 이런 경우 ApplicationContext에 xml을 알려줄 때, xml 경로 앞에 file: 을 꼭 작성해야한다. "file:c:\\spring_study\\user2.xml" ✅ 원래 경로에도 classpath: 를 붙여주는게 맞는데 생략할 수 있다.
01. 빈 생성_multi
·
Framework/SPRING FRAMEWORK
✅ 새로운 프로젝트 생성 ✅ .xml 파일을 2개 생성한다. ✅ 두 개의 xml에 각각 다른 빈을 등록한다. ✅ 빈 등록 후, main.java 로 와서 ApplicationContext에 xml을 알려준다. 두 개의 xml을 등록하였기 때문에 두 개의 xml을 알려주어야 하는데 이때 (,)으로 구분하여 알려준다. 즉,ApplicationContext에두 개 이상의 빈을 알려주어야 할 때 (,) 를 사용해 구분하여 작성한다. ✅ 존재하는 전체 xml을 알려주고 싶다면 * 를 사용한다.
01. 빈 생성
·
Framework/SPRING FRAMEWORK
📌 빈 생성 ✅ new 프로젝트 생성 ✅ new 클래스 생성 = 빈(.java)을 생성 ✅ 생성한 빈에 메서드를 작성한다. ✅ 출력문 작성한다. ✅ main 클래스를 생성한다. ✅ 이전방식을 먼저 살펴보자. new를 사용해 객체를 생성하고 호출시키는 방식 ✅ 스프링 방식을 사용하기위해 빈을 관리하는 파일을 생성한다. src/main/resouce - New - Spring Bean Configuration File ✅ 빈을 관리하는 파일인 user.xml이 만들어진 모습 ✅ 이제 user.xml에 빈 등록을 해주자 ✅ main에 ApplicationContext객체를 생성하고, Application Context에 등록한 xml을 알려준다. GenericXmlApplicationContext class ..
비 스프링 개발 vs 스프링 개발
·
Framework/SPRING FRAMEWORK
📌 비 스프링 개발 UserMain.java ————> UserService.java (main) hello(){} UserService s = new UserService(); s.hello(); 📌스프링 개발 UserMain.java ————> UserService.java (main) hello(){} 스프링에서는 클래스를 빈(bean)이라고 부른다. 직접 빈을 new 하지 않음. 외부()에서 위임해서 관리하도록 함. ( 빈 생성~빈 소멸 까지의 빈의 lifecycle을 관리함) new 하지 않고 tomcat 컨테이너가 서블릿을 관리하는 방식과 비슷하다. 차이점은 tomcat은 서버(프로그램)이고 빈을 관리하는 외부()는 프로그램이 아니고 또 다른 빈이다. 외부()의 실체 클래스(빈)는 Applic..
xoo | 수진