728x90

설정파일 : xml, java

1.명시적

2.자동적 annotation -> 데이터타입이 일치해야함

이 모든 것을 spring container가 해줌

 

**Spring AOP

기존 OOP에서는 공통관심사항을 여러 모듈에서 적용하는데 중복된 코드 양산과 같은 한계존재 -> AOP등장

AOP(Aspect Oriented Programming)

 

--Spring AOP 용어

  1. Aspect - 여러 객체에서 공통으로 적용되는 공통관심사항(ex) 트랜잭션, 로깅, 보안) WHAT

  2. JoinPoint - Aspect가 적용될 수 있는 지점(ex) 메소드, 필드)  WHO 

  3. Pointcut - 공통관심사항이 적용될 Joinpoint 

  4. Advice - 어느 시점(ex) 메소드 수행 전/후, 예외발생 후 등)에 어떤 공통 관심기능(Aspect)을 적용할지 정의한 것. WHEN

  5. Weaving - 어떤 Advice를 어떤 Pointcut(핵심사항)에 적용시킬 것인지에 대한 설정(Advisor)

 

 

Spring AOP 라이브러리 다운(spring aspects 4.3.2다운)

 

<aop:config>

    <aop:aspect id=“logingAspect” ref=“writelog”>

        <aop:pointcut id=“publicmethod” expression=“execution(public * public * org.myspring..*.* (..))”/>

        <aop:around pointcut-ref=“publicmethod” method=“logging”/>

    </aop:aspect>

</aop:config>

 

 

        <aop:config>

                 <aop:pointcut expression="execution(public * kosta..*Service.insert(..))" id="servicePointCut"/>

                    public  * (return형) (패키지명) 클래스이름패턴 (메소드)

                 <aop:aspect id="loggingAspect" ref="logAspect">

                          <aop:around method="logging" pointcut-ref="servicePointCut"/>

                 </aop:aspect>

         </aop:config>

 

 

핵심관심사항 호출시(AOP대상이면)

공통관심사항이 같이 호출됨 proxy가 일련의 행동을 하게 해줌 @autoproxy

WriteService(target객체) 

 

 

--스프링 MVC

모델2 = MVC패턴(Model-View-Controller) 패턴

 

장점

  • 화면과 비즈니스 로직을 분리해서 작업가능

  • 영역별 개발로 인해 확장성이 뛰어남

  • 표준화된 코드를 사용하므로 공동작업이 용이하고 유지보수성이 좋음

단점

  • 개발과정이 복잡해 초기 개발속도가 늦음

  • 초보자가 이해하고 개발하기에 다소 어려움

 

--Spring MVC

 

  • Dispatcher Servlet : url의 요청을 받아서 연결시켜준다. (spring에 있는 api, 서블릿 클래스)

  • Handler Mapping(default) : Dispatcher Servlet이 Controller로 매핑하는 방식을 결정

  • Controller : 로직을 처리한다. (=Action)

--action의 역할을 controller가 해줌(DI로 객체생성)

비즈니스실행

경로설정

데이터를 담아갈것인가

    • ModelAndView : view 이름, data를 담는다. (=ActionForward)

    • ViewResolver : view 타입을 정해준다. (internalResolve jsp, files의 definition, types의 view, javaclass의 view)

    • View : 받은 data를 출력한다.

 

  • 요청 처리 순서

    1. DispatcherServlet이 요청을 수신

      • 단일 front controller servlet

      • 요청을 수신하여 처리를 다른 컴포넌트에 위임

      • 어느 컨트롤러에 요청을 전송할지 결정

    2. DispatcherServlet Handler Mapping 어느컨트롤러를 사용할 것인지 문의

      • URL 매핑

    3. DispatcherServlet은 요청을 컨트롤러에게 전송하고 컨트롤러는 요청을

      처리한 후 결과 리턴

      • 비즈니스 로직 수행 후 결과 정보(Model) 생성되어 JSP와 같은 뷰에서 사용됨

    4. ModelAndView 오브젝트에 수행결과가 포함되어 DispatcherServlet에 리턴

    5. ModelAndView는 실제 JSP정보를 갖고 있지 않으며, ViewResolver가 논리적 이름을 실제 JSP이름으로 변환

    6. View는 결과정보를 사용하여 화면을 표현함

 

 

 

 

config->convertto  war. finish

build다음에

<dependencies>써주기

spring mvc 5번째 spring web mvc 4.3.2

 

 

**controller method

 

 

@RequestMapping("/hello.do")

         public ModelAndView hello(){

                 ModelAndView mav = new ModelAndView();

                 mav.setViewName("hello");

                 mav.addObject("message",service.getMessage());

            return mav;

}

}

 

=>string타입

@RequestMapping("/hello.do")

         public String hello(Model model){

            model.addAttribute("message", service.getMessage());

             return "hello";

         }

}

 

**spring잘하는방법

 

view와 controller사이를 잘 컨트롤해주면 됨

  1. view에서 controller로 command object로 전달

  2. controller에서 view로 ModelAndView전달,  string (Model)전달

 

 

 

@Controller

public class BoardController {

         

         public BoardController(){}

         

         @RequestMapping(value="/board_insert", method=RequestMethod.GET)

         public String insertForm(){

                 return "insert_form";

         }

         

         @RequestMapping(value="/board_insert", method=RequestMethod.POST)

         public String board_insert(Board board){

                 System.out.println(board);

                 return "";

         }

         

}

 

 

**spring mvc

  • viewResolver = view의 종류를 결정해줌

 

 

-spring(legacy) - RESETful방식, json형식, 

 

728x90

+ Recent posts