KDT/WEB

240123 WEB - SPRING3(가상주소매핑, 의존성주입)

001cloudid 2024. 1. 23. 12:52
728x90

시작점 가상 주소

→가상 주소 요청 정보를 저장하는 request, response

→ web.xml 참조

→ root-context.xml(DB연동)

→ servlet-context.xml

→ Controller(주소매핑)

 

회원가입처리

기존 방식(수동 방식)

src/main/java에 com.itwillbs.domain 패키지 생성 후 기존 MemberDTO파일 넣기

MemberDTO.java
0.00MB

 

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)
    어떤 객체가 필요한 객체를 외부에서 밀어 넣는다.
    주입을 받는 입장에서는 어떤 객체인지 신경 쓸 필요가 없다.
    어떤 객체에 의존하든 자신의 역할은 변하지 않는다.

 

pom.xml
0.01MB
web.xml
0.00MB
root-context.xml
0.00MB
servlet-context.xml
0.00MB
MemberService.java
0.00MB
MemberDTO.java
0.00MB
MemberDAO.java
0.00MB

728x90