전체 글 (267) 썸네일형 리스트형 Spring 작동순서 개인적인 정리 1. 스프링 기본설정하기 ( JDK, 서버 , 등 ) 2. pom.xml 설정하기 ( java-version, DBCP, AOP, 등 jar를 넣어주는 설정 파일) 3. web.xml 설정하기 ( 특정 요청이 있을 때 DispatcherServlet을 참조하도록 = *.do 요청이 있을 때 , Encoding 설정 ) 4. Dispatcherservlet 설정하기 ( context:component-scan base-package 네임스페이스로 패키지 스캔하기 ) 5. VO와 DAO(핵심로직) 만들고 , AOP ( 횡단관심과 연결 ) -> DAO가 실질적으로 메서드를 사용하는 것이 아니니 참조할 수 있게 @Repasitory 어노테이션 사용 = @Aspect / @PointCut , 연결될 메서드에도 @.. Spring - 컨트롤러, 리퀘스트 매핑 @Controller / @RequestMapping , Spring에서 매핑하는법 Step1. @ 설정을 위해서는 스프링 컨테이너가 내가 설정한 패키지 범위를 scan 할 수 있도록 context 네임스페이스를 추가해야한다! ❗ NameSpaces에서 context를 체크하면 상단 xml schema는 자동 등록됨!! Step2. Controller 객체들에게 @Component()하자! ❗ import가 하단 사진처럼 됐으면 연결이 잘 된것이다. ✔ @Controller DS이 인식하는 C 객체로 설정해줌 implements가 필요없음 -> 오버라이딩 강제 필요없음 => 완전한 POJO가 됨 메서드 시그니쳐 변경가능 ex) public void selectOneMember(HttpServletRequest request) Setp3. 사용자의 요청과 수행메서드를 연결하자! ✔ @Re.. Spring - 디스패쳐서블릿 (DispatcherServlet) / 핸들러 매핑 (HandlerMapping) / 뷰 리졸버 (ViewResolver) DispatcherServlet이란?? - DS는 스프링MVC 프로젝트의 핵심이라고 할 수 있다. - FC 역할을 하는 서블릿을 DispatcherServlet 이라한다. - DS는 FC역할로써 클라이언트로부터 요청이 들어오게 되면 모든 요청을 먼저 받게 된다. - 이 때, DS는 자신이 직접 Controller들을 호출하지 않고, HandlerMapping을 통해서 호출하게 된다. - Controller의 수행 결과로 View의 경로(String타입)를 반환하는데, 이 경로는 ViewResolver(어떻게 가야하는지 처리해줄 수 있는 객체) 에게 전달되어 사용자에게 view 화면을 제공해준다. - 수행 후 HttpServletResponse에 있는 최정 결과를 서블릿 컨테이너에게 돌려주고, 컨테이너는 .. Spring AOP Joinpoint 바인드 변수 ※ joinpoint(조인포인트) 수행중인 포인트컷 joinpoint를 인자로 가지게되면(pjp처럼) 현재 수행중인 비즈니스메서드의 시그니처 등을 알 수 있음 pjp = ProceedingJoinPoint ※ 바인드 변수 Object returnObj 설정을 해준다면, 비즈니스메서드의 반환값을 바인드 변수에 자동으로 매핑해준다. 동적바인딩에 바인딩과 비슷하다! @ 어노테이션을 이용하여 AOP 설정하는 방법 xml파일에서 스프링 컨테이너에게 지금부터 AOP 설정을 @ 으로 한다는 것을 명시해주어야함 → aspect를 하려면 포인트컷 + 횡단관심 1) 포인트컷을 설정 연결하고자하는 횡단관심이 작성된 클래스에서 설정가능 @Pointcut 2) 횡단관심이 aspectj 될 시기를 설정 3) 객체를 Service.. AOP 용어 정리 [관점지향 프로그래밍] Aspect Oriented Programing AOP에서는 핵심로직에서 직접 공통관심을 호출하지 않고 위빙(Weaving)이라 불리는 작업을 해서 공통관심 기능 코드를 주입함 이러한 위빙작업을 하기 위해서는 어디에(Pointcut), 언제(Advice) 주입을 해야할지 알아야한다. 1) Pointcut (포인트컷 , 어디에 ) 어디에 공통관심 기능코드를 주입할 것인지 정의한다. 횡단관심을 적용할 핵심로직을 의미한다. 하나의 @Aspect 안에 여러개의 포인트 컷을 선언할 수도 있다. 2) aspect (결합) 흩어진 관심사를 모듈화한 것 (여러 핵심 기능에 적용될 관심사 모듈) 비즈니스 메서드가 시작/ 끝나면 그때 등록해둔 advice가 실행 → 스프링 컨테이너가 담당 및 관리 .. 의존성 주입 ( DI = Dependency Injection ) 의존성 주입(dependency injection)은 하나의 객체가 다른 객체의 의존성을 제공하는 테크닉이다. 즉, 외부에서 두 객체 간의 관계를 지정해주는 디자인 패턴으로, 인터페이스를 사이에 두어 클래스 레벨에서는 의존관계가 고정되지 않도록 하고, 서버 런타임 시 관계를 동적으로 주입하여 결합도를 떨어트릴 수 있게 해준다. 의존성 주입에는 크게 두가지 방법이 있다. 1) 생성자 인젝션 2) 수정자(Setter) 인젝션 1) 생성자 인젝션 Iphone의 기본생성자 외에 Watch와 battery를 인자로 필요로 하는 생성자를 만든다. 그리고 .xml 파일 ( 스프링 컨테이너 ) 에는 Galaxy 객체를 phone에 담고, 이 때 이 멤버변수는 ref = "주입할 객체명" value= "문자열 혹은 기본.. Spring AOP ( 관점지향 프로그래밍 ) [관점지향 프로그래밍] Aspect Oriented Programing 횡단관심(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임 코드 자체를 수정하지 않고, 기존의 코드에 추가동작을 추가함으로써 수행한다. 이를 통해 기능을 수행하는 코드의 핵심부를 복잡하게 채우지 않고도 비즈니스 로직에 핵심적이지 않은 동작들을 프로그램에 추가할 수 있도록 한다. 즉 , 기능을 비즈니스로직과 공통 모듈로 분리한 후, 필요 시점에 비즈니스 로직에 삽입하여 실행하도록 한다. 핵심관점(비즈니스로직) + 횡단관점(트랜잭션 , 로그, 권한체크, 인증 ,예외처리 등)으로 관심의 분리를 이룬다. 쉽게말해 DI가 의존성(객체를 new)의 주입이라면 , AOP는 기능(lo.. Spring 개념 IOT ( 제어의 역행 ) [제어의 역행] Inversion of Control 객체 생성문을 직접 작성해서 해당 객체를 사용할 수 있게 하는게 아니라 객체가 필요한 곳에 객체를 주입(Injection)함으로써 해당 객체를 사용할 수 있도록 해주는 것이다. ❓누가 주입해주나? = 스프링 컨테이너 ✅ 효과 : ➡ 객체의 생성과 객체 간 의존관계에 대한 코드가 클래스코드소스 상에서 사라지게 된다 ➡ 즉, 객체를 변경해줘야할 때 해당 객체를 사용 중인 모든 클래스에서 소스를 수정하지 않아도 된다 == 유지보수 용이 , 의존관계를 명시 ❓ 그렇다면 스프링 컨테이너란?? 스프링 애플레이션 내의 여러 클래스에서 각각의 객체들을 생성하고 의존관계를 설정하는 작업을 대신 수행해주는 곳이 스프링 컨테이너 ❗ 동작순서 애플리케이션이 실행되면, 스프.. 이전 1 2 3 4 5 6 7 ··· 34 다음