반응형

프로그래밍/Spring & Spring boot 44

[Spring / 스프링] @ModelAttribute를 이용하여 파라미터 전달 받기

@ModelAttribute : DTO와 같은 모델을 커맨드 객체로 전달 받을 수 있음 @ModelAttribute의 경우 커맨드 객체를 생성하여 매개변수로 전달해 준 뒤 해당 인스턴스를 model에 담는다. 폼에서 입력한 값을 다음 화면으로 바로 전달해야 하는 경우 유용하게 사용할 수 있음 @ModelAttribute("모델에 담을 key값")을 지정할 수 있으며, 지정하지 않으면 타입의 앞 글자를 소문자로 네이밍 함 @Controller @RequestMapping("/first/*") public class FirstController { @GetMapping("search") public void search() {} @PostMapping("search") public String searchM..

[Spring스프링] @RequestParam / required / defaultValue

@RequestParam : 요청 파라미터를 매핑하여 호출 시 값을 넣어주는 어노테이션 변수앞에 작성하며 사용할 속성 값과 매개변수의 이름이 다른 경우 @RequestParam("name")으로 설정 어노테이션은 생략 가능 하지만 명시적으로 작성하는 것이 의미 파악에 쉬움 1) @RequestParam으로 값 꺼내기 @Controller @RequestMapping("/first/*") public class FirstController { @GetMapping("modify") public void modify() {} 요청에 따른 화면전환 메소드 @PostMapping("modify") public String modifyMenuPrice(Model mode, @RequestParam String m..

[Spring/스프링] @PathVariable

@PathVariable을 이용하여 { 매개변수 } 사용하기 - URL경로에 위치한 값을 Value로 인식하는 방식으로 REST형 웹 서비스를 설계할 때 유용. - parsing 불가능한 PathVariable이 전달되면 400번 에러가 발생 - PathVariable로 전달 되는 값은 반드시 매개변수 이름이 동일해야 함 - 동일하지 않을 경우 @PathVariable("이름")을 설정해 주어야 함 main. jsp GET 주문 상세보기 요청 mapping 결과보여질 페이지.jsp ${ requestScope.message } Cotroller에 @PathVariable을 이용하여 핸들러 메소드 작성 @Controller @RequestMapping("/order/*") public class Class..

[Spring / 스프링] @RequestMapping , @GetMapping , @PostMapping

DispatcherServlet은 웹 요청을 받는 즉시 @Controller가 달린 컨트롤러 클래스에 처리를 위임한다. 그 과정은 컨트롤러 클래스의 핸들러 메소드(컨트롤러에 정의 된 메소드)에 선언 된 다양한 @RequestMapping 설정 내용에 따른다 @RequestMapping : 요청에 대해 특정 메서드와 매핑하기 위해 사용하는 어노테이션 메소드와 클래스레벨에 사용할 수 있음 보통 value와 method 값을 설정함 value 는 요청받을 url 설정, method는 요청 방식 정의 @RequestMapping(value="경로", method="요청 방식") 1) value 만 설정 : method 방식을 지정하지 않으면 get/post 요청 둘 다 처리함. @Controller public..

[Spring / 스프링] Apache Maven / POM.xml / web.xml / root-context.xml / servlet-context.xml

Maven : 자바용 프로젝트 관리 도구 project object model(POM) XML 문서를 통해 해당 프로젝트의 버전 정보 및 라이브러리 정보들을 통합하여 관리하는 프레임워크 라이브러리 종속성 : Maven을 사용하면 pom.xml문서에 사용하고자 하는 라이브러리를 등록하여 자동으로 프로젝트에 추가되게 하여 라이브러리 관리의 편리성을 제공해줌 POM(project object model) : 하나의 프로젝트에서 사용하는 자바버전, 라이브러리, 플러그인 구성을 통합하여 관리할 수 있게 각 설정 정보를 XML 문서화 한 것 POM.xml 의 구성 4.0.0 com.greedy xml chap01-web-config-xml war 1.0.0-BUILD-SNAPSHOT 11 5.2.9.RELEASE ..

[Spring / 스프링] Spring MVC구성 요소와 처리 과정

Spring MVC 구성 요소 Dispatcher Servlet : 클라이언트의 요청을 전달 받음 요청에 맞는 컨트롤러가 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성 Handler Mapping : 클라이언트의 요청 URL을 어떤 컨드롤러가 처리할지 결정 Controller : 클라이언트의 요청을 처리한 뒤, 결과를 DispatcherServlet에게 리턴 컨트롤러는 결정만 하고 실질적으로는 서비스에서 처리함. 요청을 받으면 어떤 뷰 페이지를 보여줄 건지, 어떤 데이터를 보여줄 건지 결정 ModelAndView : 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담음 ViewResolver : 컨트롤러의 처리 결과를 생성할 View를 결정 View : 컨트롤러의 처리 결과 화면을 생성..

[Spring / 스프링] Spring Framework 의 특징과 구성모듈

1 . Spring Framework : 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 Spring이라고도 불림 동적인 웹 사입트를 개발하기 위한 여러 가지 서비스를 제공 대한민국 공공기관의 웹서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있음 2 . Spring의 특징 1) DI(Dependency Injection / 의존성 주입) 설정 파일이나 어노테이션을 통해 객체간 의존 관계를 설정(개발자가 설정할 필요x) 2) Spring AOP(관점 지향 프로그래밍) Database의 트랜잭션처리나 로깅 처리와 같이 여러 모듈에서 공통으로 필요로 하는 기능을 분리하여 관리함. 3) Spring JDBC Mybatis나 Hibernate 등의 데이터 베이..

[Spring/스프링] CGLib 방식으로 Proxy 구현하기

프록시 생성 방식 프록시(Proxy) : 실제 Target의 기능을 수행하면서 기능을 확장시키거나 추가하는 실제 객체 1. JDK Dynamic Proxy 방식 - 리플렉션을 이용해서 프록시 클래스를 동적으로 생성해주는 방식 - 타켓의 "인터페이스"를 기준으로 프록시 생성 - 사용자의 요청이 타겟을 바라보고 실행될 수 있도록 타겟 자체에 대한 코드 수정이 아닌 리플렉션을 이용한 방식으로 타겟의 위임 코드를 InvocationHandler를 이용하여 작성함 - 사용자가 타겟에 대한 정보를 잘못 주입하는 경우가 발생할 수 있기 때문에 내부적으로 주입된 타겟에 대한 검증 코드 를 거친 후 invoke가 동작(느림) 2. CGLib 방식 - 리플렉션 사용x - 동적으로 Proxy를 생성하지만, 바이트코드를 조작..

[Spring/스프링] 리플렉션 Reflection

리플렉션 : 컴파일 된 자바 코드에 역으로 클래스를 불러 메소드 및 필드 정보를 구해오는 방법 JVM에서 실행되는 애플리케이션의 런타임 동작을 검사하거나 수정할 수 있는 기능이 필요한 경우 사용 스프링 프레임워크, 마이바티스, 하이버네이트 등의 라이브러리에서 사용 Reflection을 사용해서 스프링에서는 런터임 시 개발자가 등록한 빈을 애플리케이션 내에서 사용 할 수 있음 Reflection 주의사항 1) 오버헤드 발생 : 성능 저하를 발생시킬 수 있기 때문에 성능에 민감한 애플리케이션에서는 사용하지 않음 2) 캡슐화 저해 : private로 설정한 member에 접근 가능하기 때문에 코드 기능이 저하되며 여러 가지 문제가 발생 방법 1. class 문법을 이용하여 Class 타입의 인스턴스를 생성 :..

15 Spring : @Aspect , @Before , @AfterAdvice, @AfterReturning, @AfterThrowing, @Around 사용하기

Spring AOP 사용하기 1) aspectj 라이브러리 추가 필요 2) Advice가 동작할 수 있게하는 class 생성 : aspectJ의 autoProxy사용에 관한 설정을 해 주어야 advice가 동작 @Configuration @EnableAspectJAutoProxy(proxyTargetClass=true) public class ContextConfiguration { } @Aspect : 클래스 선언부에 @Aspect 어노테이션을 정의 해당 클래스를 Aspect로 사용하려면 Bean으로 등록해야 하므로 @Component 어노테이션도 함께 정의해야 함. @Component @Aspect public class AroundLog { @Before Advice @Component @Aspec..

반응형