본문 바로가기

좋아하는 것_매직IT/1.spring

17.Spring, 스프링관련 자바 웹어플리케이션 레이어(Layer) 및 전반적인 구성 요소에 대해서 알아보자.

반응형
  • 스프링관련 자바 웹어플리케이션 레이어 및 전반적인 구성 요소에 대해서 알아보자.

      • 분류를 하자면, 아래와 같이 분류 가능하다.
        • Web Layer
          • 웹 애플리케이션 컨트롤러를 담당하고, 뷰를 랜더링 하는 계층
        • Business Layer
          • 비즈니스 로직을 담당하는 계층
        • Data Layer
          • 데이터베이스와 통신을 담당하는 계층
        • Integration Layer
          • 다른 애플리케이션과 통신을 담당하는 계층
        • Crosscutting concerns
          • 위의 서로다른 Layer 에 대한 전반적인 관심사
            • 예를들면, 
              • 로깅 / 보안 / 트랜잭션 관리 등등
          • 스프링 IoC 컨테이너는 Bean을 관리하기 때문에 AOP(Aspect-Oriented Programming)를 통해 Bean 주변의 관심사를 해결할 수 있음.
  • 우선, Web Layer 에 대해서 알아보자

  • 그럼, Business Layer 에 대해서 알아보자

  • 그럼, Data Layer 에 대해서 알아보자

    • 데이터베이스와 통신하는 계층을 말함.
      • 즉, JAVA 객체에서 데이터베이스로 데이터를 저장
      • 또는, 데이터베이스에서 JAVA 객체로 데이터를 저장
    • 아래는 주요 솔루션임.
      • Spring JDBC
        • JDBC(Java Database Connectivity)는 JAVA에서 데이터베이스에 접속할 수 있도록 하는 JAVA API
          • 그리고, JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공함.
          • 현재, JDBC / Spring JDBC는 더 이상 일발적으로 사용되지 않음.
          • 저도 보통은 공부를 위한 용도로 사용해보았으며, 아래 설명할 MyBatis 와 JPA 를 사용하면 정말간편하게 구현되어 질 수 있구나 비교하며, 알기위한용도 ^^; 정도일까?
        • 참고 URI
      • MyBatis
        • MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.
          • 즉, 마이바티스는 맞춤SQL Stored 프로시저 및 고급 매핑을 지원하는 퍼스트 클래스 퍼시스턴스 프레임워크임.
            • 다시말해서, 간단한 데이터 매핑 프레임워크
          • 거의 모든 JDBC 코드와 파라미터 수동 설정 및 결과 검색을 대신해주는 역할을 함.
        • 참고 URI
      • JPA
  • 그럼, Integration Layer 에 대해서 알아보자

    • 통합 레이어는 일반적으로 다른 애플리케이션과 통신하는 계층.
      • Spring JMS
      • Spring MVC RestTemplate
        • The RestTemplate is the central Spring class for client-side HTTP access. Conceptually, it is very similar to the JdbcTemplate, JmsTemplate, and the various other templates found in the Spring Framework and other portfolio projects. This means, for instance, that the RestTemplate is thread-safe once constructed, and that you can use callbacks to customize its operations.
          • 클라이언트 측 HTTP 액세스를위한 중앙 Spring 클래스임.
            • 개념적으로 JdbcTemplate, JmsTemplate 및 Spring Framework 및 기타 포트폴리오 프로젝트에있는 다양한 템플릿과 매우 유사함.
              • 다시말해서, RESTful 서비스를 호출 할 수 있음.
        • 참고 URI
      • Spring WS(Web Services)
        • Spring Web Services (Spring-WS) is a product of the Spring community focused on creating document-driven Web services. Spring Web Services aims to facilitate contract-first SOAP service development, allowing for the creation of flexible web services using one of the many ways to manipulate XML payloads. The product is based on Spring itself, which means you can use the Spring concepts such as dependency injection as an integral part of your Web service.
          • 다시말해서, SOAP 기반 웹 서비스를 호출하는데 사용 할 수 있음.
        • 참고 URI
      • Spring Integration
        • Spring Integration enables lightweight messaging within Spring-based applications and supports integration with external systems via declarative adapters. 
          • 즉, Spring 기반 애플리케이션 내에서 경량 메시징을 가능하게하며, 선언적 어댑터를 통해 외부 시스템과의 통합을 지원함.
        • 참고 URI
  • 그럼,Crosscutting concerns 에 대해서 알아보자

    • 위에서 설명한 서로다른 Layer 에 대한 전반적인 관심사에 대해서 알아보자
      • Logging
        • 아래의 관점지향 프로그래밍을 사용해 여러 Layer 에서 로깅을 구현 가능함.
          • Spring AOP 
          • AspectJ
      • Security
        • 일반적으로 Spring Security 프레임워크를 사용해 구현함.
      • Transaction 
      • Error Handler
        • 스프링에서 제공하는 대부분의 추상화는 언체크된 예외를 사용함.
          • 즉, 비즈니스 로직에서 요구하지 않는 한 클라이언트에 노출된 레이어에서 에러 처리를 구현하는 것으로 충분함.
        • Spring MVC에서는 애플리케이션 전반에 걸쳐 일관된 에러 처리를 구현하는 @ControllerAdvice 를 제공함.
          • 참고 URI
            • https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc
              • Global Exception Handling

                A controller advice allows you to use exactly the same exception handling techniques but apply them across the whole application, not just to an individual controller. You can think of them as an annotation driven interceptor.

              • Using @ControllerAdvice Classes
  • 결론

    • 스프링관련 자바 웹어플리케이션 레이어(Layer)를 분류를 하자면, 아래와 같이 분류 가능하다.
      • Web Layer
        • 웹 애플리케이션 컨트롤러를 담당하고, 뷰를 랜더링 하는 계층
      • Business Layer
        • 비즈니스 로직을 담당하는 계층
      • Data Layer
        • 데이터베이스와 통신을 담당하는 계층
      • Integration Layer
        • 다른 애플리케이션과 통신을 담당하는 계층
      • Crosscutting concerns
        • 위의 서로다른 Layer 에 대한 전반적인 관심사
          • 예를들면, 
            • 로깅 / 보안 / 트랜잭션 관리 등등
        • 스프링 IoC 컨테이너는 Bean을 관리하기 때문에 AOP(Aspect-Oriented Programming)를 통해 Bean 주변의 관심사를 해결할 수 있음.
    • 오늘도 스프링관련 자바 웹어플리케이션 레이어(Layer) 지식에 대한 마술(?) 한가지 획득완료! 감사합니다. ^^
300x250