자바 Spring

23-02-02) spring 6강 - 스프링 MVC웹서비스) 1.웹 어플리케이션 구조2.Service, DAO 계층 구조3.Service 구현4.DAO 구현 / MySQL 다운로드

JadeStone 2023. 2. 2. 20:06

 

 

 

<@Service Annotaion>

 

<서비스계층 만들어보기>

 

*옵션

-같은 타입의 빈이 여러개 있을 때는 구분하는데 문제가 생김.

그래서 빈에 직접 이름을 붙여주는 옵션이 있음.

@Service("이름")   -> 이렇게 빈의 이름을 명시해줄 수 있음.

 

*예시

서비스 인터페이스를 구현하는 서비스 클래스

@Service("xxx") //빈의 이름명시 
public class ScoreServiceImpl {}

컨트롤러

	//3nd - @Service로 빈으로 생성하고. 의존객체 자동주입
	@Autowired
	@Qualifier("xxx") //어노테이션 이름을 이용한 강제 연결 
					  //어노테이션 이름은 보통 멤버변수의 이름을 따라감.
	private ScoreService service; //인터페이스 타입 선언

 

#서비스 계층 구현

*방법1

//1st
ScoreServiceImpl service = new ScoreServiceImpl();

*방법2

-ServiceImpl 클래스에 빈으로 생성하겠다고 선언

@Service("xxx") //빈의 이름명시 
public class ScoreServiceImpl{}

- servlet-context.xml 에 서비스영역을 빈으로 생성해줌.

<!-- 2nd - service영역을 빈으로 생성 -->
<beans:bean class="com.simple.score.service.ScoreServiceImpl"/>

- ServiceController 에서 서비스영역 타입의 변수에 의존객체 자동주입해줌.

	//2nd - service를 bean으로 생성한다. 의존객체 자동주입
	@Autowired
	ScoreServiceImpl service;

 

*방법3

-서비스 객체를 빈으로 만들겠다고 선언

//@Component //@Repository  //@Controller
@Service("xxx") //빈의 이름명시 
public class ScoreServiceImpl implements ScoreService{}

 

-servlet-context.xml 에 서비스 객체를 빈으로 만들겠다고 선언해 놓은 부분을 읽어서 자동으로 빈을 생성하도록 설정.

<--패키지에서 빈으로 만들기로 선언되있는 클래스들을 자동으로 빈으로 생성 -->

<!-- com.simple이라는 베이스가되는 패키지에 .* 하면 그 하위에 모든 패키지를 읽어주게만들어준다는 의미  -->	
	<context:component-scan base-package="com.simple.*" /> 

<-- 아래보다 위에 방식으로 패키지를 읽게 설정하면 더 편함-->
<-- <context:component-scan base-package="com.simple.score.service"/> -->

-ServiceController 에서 서비스 객체 사용

 서비스 계층 구조상 인터페이스타입을 선언해 놓고 인터페이스를 담아 놓은 객체의 빈을 

 인터페이스 타입 변수에 의존객체 자동주입함.

@Autowired 는 타입을 비교하여 자동주입을 해줌

@Qualifier("지정해놓은 이름") 해당하는 이름의 빈을 가져와서 강제로 연결해줌.

	//3nd - @Service로 빈으로 생성하고. 의존객체 자동주입
	@Autowired
	@Qualifier("xxx") //어노테이션 이름을 이용한 강제 연결 
					  //어노테이션 이름은 보통 멤버변수의 이름을 따라감.
	private ScoreService service; //인터페이스 타입 선언

 

# DAO 계층구현

*서비스 계층 구현하는 방법과 동일함.

다만, 

DAO 계층의 인터페이스 구현 클래스에는

@Repository 어노테이션을 붙여줌.

@Repository("yyy")
public class ScoreDAOImpl implements ScoreDAO {}

 

<서비스영역의 동작 방식>

#동작 순서정리

*페이지에서 요청이 들어옴

*컨트롤러를 통해서 해당하는 영역으로 연결

-컨트롤러 내에서 서비스영역을 호출

-서비스영역을 통해서 DAO를 데이터에 대한 작업을 수행 후 결과를 다시 리턴

*서비스 영역에서 컨트롤러로 데이터에대한 처리가 넘어옴. 

*데이터를 담아서 이동할 페이지로 이동

 

 

 

 

<데이터베이스 설치>

*최근 데이터베이스 추세

-postgre

-mysql

-mariaDB 

를 많이 사용. 오라클은 비용문제로 사용하는 곳이 많이 줄어듦.

 

*MySQL 다운로드

링크 : https://www.mysql.com/

 

MySQL

Over 2000 ISVs, OEMs, and VARs rely on MySQL as their products' embedded database to make their applications, hardware and appliances more competitive, bring them to market faster, and lower their cost of goods sold. Learn More »

www.mysql.com

* 커뮤니티용으로 다운.