시작점 가상 주소
→가상 주소 요청 정보를 저장하는 request, response
→ web.xml 참조
→ root-context.xml(DB연동)
→ servlet-context.xml
→ Controller(주소매핑)
회원가입처리
기존 방식(수동 방식)
src/main/java에 com.itwillbs.domain 패키지 생성 후 기존 MemberDTO파일 넣기
MemberController.java
@RequestMapping(value = "/member/insertPro", method = RequestMethod.POST)
public String insertPro(HttpServletRequest request) {
// public String insertPro(사용하고자 하는 값의 변수 정의)
System.out.println("MemberController insertPro()");
//회원가입처리
//request 한글처리
try {
request.setCharacterEncoding("utf-8");
} catch (Exception e) {
e.printStackTrace();
}
//request 태그이름에 해당하는 파라미터 값을 가져오기 → 변수에 저장
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
//패키지 com.itwillbs.domain 파일 MemberDTO(MemberBean, MemberVO)
//MemberDTO 객체 생성
//MemberDTO에는 애노테이션이 없기 때문에 web.xml에 작성할 필요 없음
MemberDTO memberDTO = new MemberDTO();
//set 메소드 호출. 값을 저장
memberDTO.setId(id);
memberDTO.setPw(pw);
memberDTO.setName(name);
//출력 get 메소드 호출
System.out.println(memberDTO.getId());
System.out.println(memberDTO.getPw());
System.out.println(memberDTO.getName());
// /member/login 주소 변경하면서 이동(redirect:)
return "redirect:/member/login";
}
try-catch문을 주석처리하고 회원가입을 하면 한글이 깨진다.
위의 request 한글처리 방식을 하면 하나하나 해줘야 한다.
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<!-- 3) listener 서버에 연결되어지면 실행되는 파일 ContextLoaderListener 동작
Context 파일 호출 (/WEB-INF/spring/root-context.xml) -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Processes application requests -->
<!-- 2) servlet-name인 appServlet을 찾음
=> 스프링파일 DispatcherServlet(서블릿 지정) 연결
=> /WEB-INF/spring/appServlet/servlet-context.xml 서블릿 지정 -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 1) / 모든 주소, 모든 가상 주소가 들어오면 servlet-name인 appServlet을 찾으러 감 -->
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- post전송 request 한글 처리 "utf-8" 설정 -->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
※web.xml 파일이 가장 먼저 실행되기 때문에 오타가 있을 경우 톰캣이 동작하지 않을 수 있다.
MemberController
@RequestMapping(value = "/member/insertPro", method = RequestMethod.POST)
public String insertPro(MemberDTO memberDTO) {
//insert.jsp 태그 이름 id,pw,name와
//MemberDTO 멤버변수 이름 id,pw,name이 일치하면 자동으로 동작
// public String insertPro(사용하고자 하는 값의 변수 정의)
System.out.println("MemberController insertPro()");
//회원가입처리
//request 한글처리
// try {
// request.setCharacterEncoding("utf-8");
//
// } catch (Exception e) {
// e.printStackTrace();
// }
// //request 태그이름에 해당하는 파라미터 값을 가져오기 → 변수에 저장
// String id = request.getParameter("id");
// String pw = request.getParameter("pw");
// String name = request.getParameter("name");
//
// //패키지 com.itwillbs.domain 파일 MemberDTO(MemberBean, MemberVO)
// //MemberDTO 객체 생성
// //애노테이션이 없기 때문에 web.xml에 작성할 필요가 없다
// MemberDTO memberDTO = new MemberDTO();
// //set 메소드 호출. 값을 저장
// memberDTO.setId(id);
// memberDTO.setPw(pw);
// memberDTO.setName(name);
//출력 get 메소드 호출
System.out.println(memberDTO.getId());
System.out.println(memberDTO.getPw());
System.out.println(memberDTO.getName());
// /member/login 주소 변경하면서 이동(redirect:)
return "redirect:/member/login";
}
만약 insert.jsp나 MemberDTO에 변수 이름이 다르면 저장이 되지 않음
패키지 com.itwillbs.service 파일 MemberService( 처리 작업 )
패키지 com.itwillbs.dao 파일 MemberDAO (DB작업, 수동 → 자동화 @)
MemberDAO inserMember()메소드 정의
MemberService에서 MemberDAO 객체 생성 후 insertMember() 메소드 호출
MemberController에서 MemberService 객체 생성 후 insertMember() 메소드 호출
MemberController
@RequestMapping(value = "/member/insertPro", method = RequestMethod.POST)
public String insertPro(MemberDTO memberDTO) {
// public String insertPro(사용하고자 하는 값의 변수 정의)
//insert.jsp 태그 이름 id,pw,name와
//MemberDTO 멤버변수 이름 id,pw,name이 일치하면 자동으로 동작
System.out.println("MemberController insertPro()");
//회원가입처리
//request 한글처리
// try {
// request.setCharacterEncoding("utf-8");
//
// } catch (Exception e) {
// e.printStackTrace();
// }
// //request 태그이름에 해당하는 파라미터 값을 가져오기 → 변수에 저장
// String id = request.getParameter("id");
// String pw = request.getParameter("pw");
// String name = request.getParameter("name");
//
// //패키지 com.itwillbs.domain 파일 MemberDTO(MemberBean, MemberVO)
// //MemberDTO 객체 생성
// //애노테이션이 없기 때문에 web.xml에 작성할 필요가 없다
// MemberDTO memberDTO = new MemberDTO();
// //set 메소드 호출. 값을 저장
// memberDTO.setId(id);
// memberDTO.setPw(pw);
// memberDTO.setName(name);
//출력 get 메소드 호출
// System.out.println(memberDTO.getId());
// System.out.println(memberDTO.getPw());
// System.out.println(memberDTO.getName());
//처리 작업 패키지 com.itwillbs.service 파일 MemberService
//→ 리턴형 없는 insertMember(memberDTO 주소) 메소드 정의
//패키지 com.itwillbs.dao 파일 MemberDAO
//→ 리턴형 없는 insertMember(memberDTO 주소) 메소드 정의
//MemberService객체 생성 후 insertMember() 메소드 호출
MemberService memberService = new MemberService();
memberService.insertMember(memberDTO);
// /member/login 주소 변경하면서 이동(redirect:)
return "redirect:/member/login";
}
MemberService
package com.itwillbs.service;
import com.itwillbs.dao.MemberDAO;
import com.itwillbs.domain.MemberDTO;
public class MemberService {
//리턴형 없는 insertMember(memberDTO 주소) 메소드 정의
public void insertMember(MemberDTO memberDTO) {
System.out.println("MemberService insertMember()");
//MemberDAO 객체 생성 후 insertMember() 메소드 호출
MemberDAO memberDAO = new MemberDAO();
memberDAO.insertMember(memberDTO);
}
}// 닫는 괄호
MemberDAO
package com.itwillbs.dao;
import com.itwillbs.domain.MemberDTO;
public class MemberDAO {
//리턴형 없는 insertMember(memberDTO 주소) 메소드 정의
public void insertMember(MemberDTO memberDTO) {
System.out.println("MemberDAO insertMember()");
}
}// 닫는 괄호
include 반복되는 부분을 따로 파일로 떼어서 한 번만 수정하면 모든 페이지가 수정되는 것과 같이
자바 controller service DAO 각각 객체를 생성해서 메소드를 호출, 리턴 반복
객체 생성되는 것이 반복. 객체 생성을 따로 만들어서(xml) 모든 객체를 생성한 후 필요할 때 필요한 곳에 주는 방식
즉, 간접적으로 객체를 전달 → 의존관계주입 → 수정을 최소화할 수 있음
※주입 = 준다.
MemberController
package com.itwillbs.controller;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.itwillbs.domain.MemberDTO;
import com.itwillbs.service.MemberService;
@Controller
public class MemberController {
//member관련 들고오기
//MemberService 객체 생성 → 멤버 변수
// MemberService memberService = new MemberService(); 자바단 안에서 객체 생성
//멤버변수를 정의하고 root-context.xml에서 객체를 생성해서 멤버 변수에 전달(주입)
private MemberService memberService;
//1) memberService를 받는 생성자 준비
// → root-context.xml에서 생성자를 통해서 객체생성값 전달
@Inject
public MemberController(MemberService memberService) {
System.out.println("MemberController 생성자");
this.memberService = memberService;
}
//가상주소 /member/insert → /WEB-INF/view/member/insert.jsp연결
//http://localhost:8080/myweb/member/insert 가상주소
@RequestMapping(value = "/member/insert", method = RequestMethod.GET)
public String insert() {
// /insert → /WEB-INF/views/member/insert.jsp 주소 변경 없이 이동하는 방식(forword)
return "/member/insert";
}
//http://localhost:8080/myweb/member/insertPro 가상주소(POST 방식)
@RequestMapping(value = "/member/insertPro", method = RequestMethod.POST)
public String insertPro(MemberDTO memberDTO) {
// public String insertPro(사용하고자 하는 값의 변수 정의)
//insert.jsp 태그 이름 id,pw,name와
//MemberDTO 멤버변수 이름 id,pw,name이 일치하면 자동으로 동작
System.out.println("MemberController insertPro()");
//회원가입처리
//request 한글처리
// try {
// request.setCharacterEncoding("utf-8");
//
// } catch (Exception e) {
// e.printStackTrace();
// }
// //request 태그이름에 해당하는 파라미터 값을 가져오기 → 변수에 저장
// String id = request.getParameter("id");
// String pw = request.getParameter("pw");
// String name = request.getParameter("name");
//
// //패키지 com.itwillbs.domain 파일 MemberDTO(MemberBean, MemberVO)
// //MemberDTO 객체 생성
// //애노테이션이 없기 때문에 web.xml에 작성할 필요가 없다
// MemberDTO memberDTO = new MemberDTO();
// //set 메소드 호출. 값을 저장
// memberDTO.setId(id);
// memberDTO.setPw(pw);
// memberDTO.setName(name);
//출력 get 메소드 호출
System.out.println(memberDTO.getId());
System.out.println(memberDTO.getPw());
System.out.println(memberDTO.getName());
//처리 작업 패키지 com.itwillbs.service 파일 MemberService
//→ 리턴형 없는 insertMember(memberDTO 주소) 메소드 정의
//패키지 com.itwillbs.dao 파일 MemberDAO
//→ 리턴형 없는 insertMember(memberDTO 주소) 메소드 정의
//MemberService insertMember() 메소드 호출
memberService.insertMember(memberDTO);
// /member/login 주소 변경하면서 이동(redirect:)
return "redirect:/member/login";
}
(...생략...)
}//닫는 괄호
MemberService
package com.itwillbs.service;
import com.itwillbs.dao.MemberDAO;
import com.itwillbs.domain.MemberDTO;
public class MemberService {
//MemberDAO 객체 생성 → 멤버 변수
MemberDAO memberDAO = new MemberDAO();
//리턴형 없는 insertMember(memberDTO 주소) 메소드 정의
public void insertMember(MemberDTO memberDTO) {
System.out.println("MemberService insertMember()");
//MemberDAO insertMember() 메소드 호출
memberDAO.insertMember(memberDTO);
}
}// 닫는 괄호
MemberDAO
package com.itwillbs.dao;
import com.itwillbs.domain.MemberDTO;
public class MemberDAO {
//리턴형 없는 insertMember(memberDTO 주소) 메소드 정의
public void insertMember(MemberDTO memberDTO) {
System.out.println("MemberDAO insertMember()");
}
}// 닫는 괄호
root-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- MemberController 객체 생성 -->
<bean id="memberController" class="com.itwillbs.controller.MemberController">
<constructor-arg name="memberService" ref="memberService"></constructor-arg>
</bean>
<!-- MemberService 객체 생성
자바 MemberService memberService = new MemberService();
스프링 <bean id="변수명" class="경로">-->
<bean id="memberService" class="com.itwillbs.service.MemberService">
</bean>
<!-- 외부에서 자바단으로 전달 set메소드, 생성자를 통해서 memberService에서 MemberController에 값을 전달할 수 있음 -->
</beans>
MemberController
package com.itwillbs.controller;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.itwillbs.domain.MemberDTO;
import com.itwillbs.service.MemberService;
@Controller
public class MemberController {
//member관련 들고오기
//MemberService 객체 생성 → 멤버 변수
// MemberService memberService = new MemberService(); 자바단 안에서 객체 생성
//멤버변수를 정의하고 root-context.xml에서 객체를 생성해서 멤버 변수에 전달(주입)
private MemberService memberService;
//1) memberService를 받는 생성자 준비
// → root-context.xml에서 생성자를 통해서 객체생성값 전달
// @Inject
// public MemberController(MemberService memberService) {
// System.out.println("MemberController 생성자");
// this.memberService = memberService;
// }
//2) memberService를 받는 set메소드 준비
// → root-context.xml에서 set메소드를 통해서 객체생성값 전달
@Inject
public void setMemberService(MemberService memberService) {
this.memberService = memberService;
}
//가상주소 /member/insert → /WEB-INF/view/member/insert.jsp연결
//http://localhost:8080/myweb/member/insert 가상주소
@RequestMapping(value = "/member/insert", method = RequestMethod.GET)
public String insert() {
// /insert → /WEB-INF/views/member/insert.jsp 주소 변경 없이 이동하는 방식(forword)
return "/member/insert";
}
//http://localhost:8080/myweb/member/insertPro 가상주소(POST 방식)
@RequestMapping(value = "/member/insertPro", method = RequestMethod.POST)
public String insertPro(MemberDTO memberDTO) {
// public String insertPro(사용하고자 하는 값의 변수 정의)
//insert.jsp 태그 이름 id,pw,name와
//MemberDTO 멤버변수 이름 id,pw,name이 일치하면 자동으로 동작
System.out.println("MemberController insertPro()");
//회원가입처리
//request 한글처리
// try {
// request.setCharacterEncoding("utf-8");
//
// } catch (Exception e) {
// e.printStackTrace();
// }
// //request 태그이름에 해당하는 파라미터 값을 가져오기 → 변수에 저장
// String id = request.getParameter("id");
// String pw = request.getParameter("pw");
// String name = request.getParameter("name");
//
// //패키지 com.itwillbs.domain 파일 MemberDTO(MemberBean, MemberVO)
// //MemberDTO 객체 생성
// //애노테이션이 없기 때문에 web.xml에 작성할 필요가 없다
// MemberDTO memberDTO = new MemberDTO();
// //set 메소드 호출. 값을 저장
// memberDTO.setId(id);
// memberDTO.setPw(pw);
// memberDTO.setName(name);
//출력 get 메소드 호출
System.out.println(memberDTO.getId());
System.out.println(memberDTO.getPw());
System.out.println(memberDTO.getName());
//처리 작업 패키지 com.itwillbs.service 파일 MemberService
//→ 리턴형 없는 insertMember(memberDTO 주소) 메소드 정의
//패키지 com.itwillbs.dao 파일 MemberDAO
//→ 리턴형 없는 insertMember(memberDTO 주소) 메소드 정의
//MemberService insertMember() 메소드 호출
memberService.insertMember(memberDTO);
// /member/login 주소 변경하면서 이동(redirect:)
return "redirect:/member/login";
}
(...생략...)
}//닫는 괄호
호출 → root-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- MemberController 객체 생성 -->
<bean id="memberController" class="com.itwillbs.controller.MemberController">
<!-- <constructor-arg name="memberService" ref="memberService"></constructor-arg> -->
<property name="memberService" ref="memberService"></property>
</bean>
<!-- MemberService 객체 생성
자바 MemberService memberService = new MemberService();
스프링 <bean id="변수명" class="경로">-->
<bean id="memberService" class="com.itwillbs.service.MemberService">
</bean>
<!-- 외부에서 자바단으로 전달 set메소드, 생성자를 통해서 memberService에서 MemberController에 값을 전달할 수 있음 -->
</beans>
MemberService
package com.itwillbs.service;
import javax.inject.Inject;
import com.itwillbs.dao.MemberDAO;
import com.itwillbs.domain.MemberDTO;
public class MemberService {
//MemberDAO 객체 생성 → 멤버 변수
// MemberDAO memberDAO = new MemberDAO();
private MemberDAO memberDAO;
//set 메소드 정의
@Inject
public void setMemberDAO(MemberDAO memberDAO) {
this.memberDAO = memberDAO;
}
//리턴형 없는 insertMember(memberDTO 주소) 메소드 정의
public void insertMember(MemberDTO memberDTO) {
System.out.println("MemberService insertMember()");
//MemberDAO insertMember() 메소드 호출
memberDAO.insertMember(memberDTO);
}
}// 닫는 괄호
root-context
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- MemberController 객체 생성 -->
<bean id="memberController" class="com.itwillbs.controller.MemberController">
<!-- <constructor-arg name="memberService" ref="memberService"></constructor-arg> -->
<property name="memberService" ref="memberService"></property>
</bean>
<!-- MemberService 객체 생성
자바 MemberService memberService = new MemberService();
스프링 <bean id="변수명" class="경로">-->
<bean id="memberService" class="com.itwillbs.service.MemberService">
<property name="memberDAO" ref="memberDAO"></property>
</bean>
<!-- MemberDAO 객체 생성 -->
<bean id="memberDAO" class="com.itwillbs.dao.MemberDAO">
</bean>
</beans>
의존관계주입(DI, Dependency Injection) : 스프링에서 객체를 생성하는 방식
데이터베이스 연결 객체 생성
프로그램 설치
→ 자동으로 프로그램 설치 Maven 의존
→ Maven 서버에 프로그램이 저장되어 있고 다운로드하고자 하는 프로그램 이름을 적으면 다운로드하여서 사용
→ 프로그램 맨 아래 pom.xml(다운로드하고 싶은 프로그램 목록을 적음)
→ 웹 maven repository 검색
→ https://mvnrepository.com/에서 mysql 검색
→ 중간에 Maven 코드 복사
→ pom.xml에 코드 붙여 넣기
→ https://mvnrepository.com/에서 Spring JDBC 검색
→ 중간에 Maven 코드 복사
→ pom.xml에 코드 붙여넣기
→ 버전 수정 <version>${org.springframework-version}</version>
→ Maven Dependencies에 자동으로 다운로드됨
pom.xml
(...생략...)
<!-- MySQL Connector/J 8.0.33 -->
<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
<!-- Spring JDBC -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
(...생략...)
root-context
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- MemberController 객체 생성 -->
<bean id="memberController" class="com.itwillbs.controller.MemberController">
<!-- <constructor-arg name="memberService" ref="memberService"></constructor-arg> -->
<property name="memberService" ref="memberService"></property>
</bean>
<!-- //부모(인터페이스) = 자식(인터페이스를 상속받은 클래스) 객체 생성
MemberService 객체 생성
자바 MemberService memberService = new MemberService();
스프링 <bean id="변수명" class="경로">-->
<bean id="memberService" class="com.itwillbs.service.MemberService">
<property name="memberDAO" ref="memberDAO"></property>
</bean>
<!-- MemberDAO 객체 생성 -->
<bean id="memberDAO" class="com.itwillbs.dao.MemberDAO">
</bean>
<!-- 데이터베이스 연결 객체 생성
프로그램 설치
→ 자동으로 프로그램 설치 Maven 의존
→ Maven 서버에 프로그램이 저장되어 있고 다운받고자 하는 프로그램 이름을 적으면 다운받아서 사용
→ 프로그램 맨 아래 pom.xml(다운받고 싶은 프로그램 목록을 적음)
→ 웹 maven repository 검색
→ https://mvnrepository.com/에서 mysql 검색
→ 중간에 Maven 코드 복사
→ pom.xml에 코드 붙여넣기
→ https://mvnrepository.com/에서 Spring JDBC 검색
→ 버전 수정 <version>${org.springframework-version}</version> -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul"></property>
<property name="username" value="root"></property>
<property name="password" value="1234"></property>
</bean>
</beans>
MemberDAO
package com.itwillbs.dao;
import javax.inject.Inject;
import javax.sql.DataSource;
import com.itwillbs.domain.MemberDTO;
public class MemberDAO {
//멤버변수 정의 javax.sql.DataSource
private DataSource dataSource;
//set 메소드
@Inject
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
//리턴형 없는 insertMember(memberDTO 주소) 메소드 정의
public void insertMember(MemberDTO memberDTO) {
System.out.println("MemberDAO insertMember()");
}
}// 닫는 괄호
의존성 주입(의존관계 주입)
- 의존성(Dependency)
하나의 객체가 다른 객체 없이 제대로 된 역할을 할 수 없다는 것. 즉 하나의 객체가 다른 객체의 상태에 따라 영향을 받는 것을 의미함. 객체 A가 객체 B 없이 동작이 불가능한 상황을 'A가 B에 의존적이다.'라고 표현 - 주입(Injection)
외부에서 밀어넣는 것. - 의존성 주입(DI;Dependency Injection)
어떤 객체가 필요한 객체를 외부에서 밀어 넣는다.
주입을 받는 입장에서는 어떤 객체인지 신경 쓸 필요가 없다.
어떤 객체에 의존하든 자신의 역할은 변하지 않는다.
'KDT > WEB' 카테고리의 다른 글
240129 WEB(마이바티스) (0) | 2024.01.29 |
---|---|
240125 WEB - Spring4(JDBC, 마이바티스) (0) | 2024.01.25 |
240122 WEB - SPRING2(환경설정, 가상주소매핑) (0) | 2024.01.22 |
240118 WEB - JSP25(MVC, JSTL, 페이지), SPRING 1(설치, 환경설정) (0) | 2024.01.18 |
240116 WEB - JSP24(MVC, JSTL, 게시글 자르기(페이징알고리즘)) (0) | 2024.01.16 |