korean IT student

스프링 어노테이션 및 패키지 정리 본문

back-end/SPRING

스프링 어노테이션 및 패키지 정리

현창이 2019. 4. 15. 08:59

소스 유형별 패키지
-해당 패키지 하위의 소스들을 유형에 맞게 관리하기 위해 다음 유형별 패키지를 추가

서비스(비즈니스레이어) -service 
-비즈니스 레이어에 속하는 서비스에 대한 인터페이스
-인터페이스에 대한 구현클래스,VO,Mapper등을 묶을 수 있는 패키지
-하위에 인터페이스를 위치시키고 impl 이라는 패키지를 포함한다.
ex)com.sweon.anyone.xxxx.service

구현체-impl
-service 패키지 하위에 위치하며, 구현 클래스와 Mapper 등과 같은 Resource Layer를 접근하는 클래스들의 패키지
ex) com.sweon.anyone.xxxxx.service.impl    mapper소스

모델-vo 
-vo와 같은 모델 클래스들의 패키지
ex) com.sweon.anyone.xxx.vo    vo소스

웹 레이어 web  
-웹 레이어에 속하는 소스들을 구분할 수 있는 패키지
ex) com.sweon.anyone.xxxx.web   controller 소스

배치 batch
-해당 업무가 배치 업무를 포함하는 경우 batch라는 유형 패키지를 사용한다.

레이어 별로 구분하여 상세 정의

@service 
-business layer를 구성하는 서비스 클래스 대상

@controller
-presentation layer를 구성하는 controller 클래스 대상
-presentation layer를 springMVC 기반으로 구성하는 경우 사용 가능

@Repository 
-Data Access Layer를 구성하는 클래스 대상
-Persistence Layer 에서 발생한 Exception에 대한 Translation 지원
-Spring에서는 향후 지속적으로 레이어 별 특성을 반영할 수 있는 속성들 추가 예정

Database Session 설정
-context-mybatis.xml
-쿼리 수행 시, 연결될 데이터 소스 정보 설정
-Mapper에서 사용하는 Bean 설정 정보
-프로젝트에서 사용할 세션을 추가한다.

Query 파일 작성 -resultMap (/board_sql.xml)
-vo 기반
-vo를 만드는 경우 vo의 필드명과 테이블에 대한 attribute명에 대한 mapping이 필요하므로 하나의 result mapping은 반드시 필요, 하나의 vo에 대해서는 하나씩만 만드는 것으로 한다.

@controller는 클라이언트로부터 전달되어진 데이터를 가공하기 위한 controller임을 명시하며 @requestmapping을 통해 경로 설정을 하게 된다.

@repository는 해당 클래스가 데이터베이스에 접근하는 클래스임을 명시함

@service는 repository를 통해 데이터베이스에서 데이터를 가져온 후 컨트롤러에게 전달해 주는 클래스임을 명시

@resource 어노테이션은 어플리케이션에서 필요로 하는 자원을 자동 연결할 때 사용된다. 프로퍼티 및 설정메서드등에 적용시키며 스프링 설정파일에 등록되어있는 빈 객체의 name 속성을 통하여 자동으로 주입된다.
(@Autowired 어노테이션이 타입으로 자동 주입을 하는 반면, @Resource 어노테이션은 name속성을 통해 자동 주입을 실행한다.)
@Resource 어노테이션 역시 스프링 설정파일에태그를 등록해놓으면 자동으로 스프링이 인식을 하게 된다.
만약 설정을 하지 않는다면 위의 코드처럼 CommonAnnotationBeanPostProcessor 클래스를 빈으로 등록해야 스프링이 인식을 할 수 있게된다.


exception 처리

-aop설정 :context-aspect.xml
-필요에 의해 업무 시스템별 handler 구현가능
-업무 단에서 비즈니스 logic exception을 처리하지 않는다면 전부 throw

transaction manager 설정
-context-transaction.xml
-rollback 혹은 commit에 대한 설정
-프로젝트에서 사용할 트랜잭션을 추가한다.

MessageSource
-context-common.xml 메시지 파일 등록
-다국어 지원을 위해 모든 로그 및 화면 메시지,label 등은 message Resource로 등록하여 사용

@controller 명세
-@requestmapping을 통해 화면 주소설정
-modelmap 객체에 화면에서 사용할 데이터를 설정
-메뉴id 설정(화면에 출력될 jsp파일정보):model.addAttribute("pageBodyUrl",파일경로);
-파일경로 설정
-moveVO.getMovePageUrl(전체파일명)
-moveVO.getMovePageUrl(경로,파일명)

validation
-입력값 검증을 위한 Validation 기능은 프레임워크에서 제공하는 Apache Commons Validator 기능을 이용
-server-side(java코드) 뿐 아니라 client-side(javascript 코드)를 일괄로 수행할 수 있기 때문에 검증을 함께 수행할 수 있으며, Configuration과 에러메시지를 client-side, server-side 별로 따로 하지 않고 한곳에 같이 쓰는 관리상의 장점이 있다.






Comments