스프링

· Spring
디폴트 핸들러와 HandlerMapping의 우선순위 dispatcher org.springframework.web.servlet.DispatcherServlet contextClass org.springframework.web.context.support.AnnotationConfigWebApplicationContext contextConfigLocation config.MvcConfig config.ControllerConfig 1 dispatcher / 위 web.xml 설정을 보시면 DispatcherServlet에 대한 매핑 경로를 다음과 같이 '/'로 주어져있습니다. 매핑 경로가 '/'인 경우 .jsp로 끝나는 요청을 제외한 모든 요청을 DispatcherServlet이 처리합니다. 즉 /i..
· Spring
클라이언트와 핸들러 - 클라이언트의 요청을 실제로 처리하는 것은 컨트롤러 - DispatcherServlet은 클라이언트의 요청을 전달받는 창구역할 - DispatcherServlet은 클라이언트의 요청을 처리할 컨트롤러를 찾기 위해 HandlerMapping을 사용 컨트롤러를 찾아주는 객체는 ControllerMapping 타입이어야 할 것 같은데 실제는 HandlerMapping 스프링 MVC는 웹 요청을 처리할 수 있는 범용 프레임워크 - @Controller 어노테이션을 붙인 클래스를 이용해서 클라이언트 요청을 처리할 수 있지만, - 자신이 직접 만든 클래스를 이용해서 클라이언트의 요청을 처리할 수 있다. DispatcherServlet 입장에서 클라이언트 요청을 처리하는 객체의 타입이 반드시 @..
· Spring
이번 포스팅에서는 클라이언트의 요청을 알맞게 처리할 컨트롤러와 처리 결과를 보여줄 JSP 코드를 통해 실습해 보도록 하겠습니다. 컨트롤러 구현 package chap09; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class HelloController { @GetMapping("/hello") public String hello(Model mode..
· Spring
이번 시간에는 @EnableTransactionManagement 애노테이션에이 제공하는 속성에 대해 알아봅시다. @EnableTransactionManagement 애노테이션의 속성 속성 설명 proxyTargetClass 클래스를 이용해서 프록시를 생성할지 여부를 지정한다. 기본값은 false로서 인터페이스를 이용해서 프록시를 생성한다. order AOP 적용 순서를 지정한다. 기본값은 가장 낮은 우선순위에 해당하는 int의 최댓값이다. 트랜잭션 전파 public class SomeService{ private AnyService anyService; @Transactional public void some(){ anyService.any(); } public void setAnyService(Any..
· Spring
이번 시간에는 Spring의 익셉션 변환처리에 대해 알아보겠습니다. SQL 문법이 잘못됐을 때 발생한 메시지를 보면 익셉션 클래스가 org.springframework.jdbc 에 속한 BadSqlGrammarException 클래스임을 알 수 있습니다. 해당 익셉션이 발생한 이유는 MySQLSyntaxErrorException이 발생했기 때문입니다. org.springframework.jdbc.BadSqlGrammarException: ... Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: ... 해당 익셉션이 발생한 코드를 살펴보면 jdbcTemplate.update((Connection conn) -> { PreparedS..
· Spring
Tomcat JDBC의 주요 프로퍼티 Tomcat JDBC 모듈의 DataSource(org.apache.tomcat.jdbc.pool.DataSource) 클래스는 커넥션 풀 기능을 제공하는 DataSource 구현 클래스입니다. DataSource 클래스는 커넥션을 몇 개 만들지 지정할 수 있는 메서드를 제공합니다. setInitialSize(int) 커넥션 풀을 초기화 할때 생성할 초기 커넥션 개수 지정 기본값 : 10 setMaxActive(int) 커넥션 풀에서 가져올 수 있는 최대 커넥션 개수 지정 기본 값 : 100 setMaxIdle(int) 커넥션 풀에 유지할 수 있는 최대 커넥션 개수 지정 기본값 : maxActive setMinIdle(int) 커넥션 풀에 유지할 최소 커넥션 개수 지..
· Spring
스프링에서 JDBC를 사용해려면 pom.xml을 다음과 같이 구성해야 합니다. org.springframework spring-context 5.0.2.RELEASE org.springframework spring-jdbc 5.0.2.RELEASE org.apache.tomcat tomcat-jdbc 8.5.27 mysql mysql-connector-java 5.1.45 * spring-jdbc : JdbcTemplate 등 JDBC 연동에 필요한 기능을 제공합니다. * tomca-jdbc : DB 커넥션풀 기능을 제공합니다. * mysql-connector-java : MySQL 연결에 필요한 JDBC 드라이버를 제공합니다. 스프링이 제공하는 트랜잭션 기능을 사용하려면 spring-tx 모듈이 필요한..
· Spring
@Pointcut 가 아닌 @Around에 execution 명시자를 직접 지정할 수 도 있습니다. @Asepct public class CacheAspect{ @Around("execution(public * chap07..*(..))") public Object execute(ProceedingJoinPoint joinPoint) throws Throwable { ... } } 만약 같은 Pointcut을 여러 Advice가 함께 사용한다면 공통 Pointcut을 재사용할 수도 있습니다. ExeTimeAspect @Aspect @Order(1) public class ExeTimeAspect { @Pointcut("execution(public * chap07..*(long))") private vo..
· Spring
Aspect를 적용할 위치를 지정할 때 사용한 Pointcut 설정을 보면, execution 명시자를 사용했습니다. @Aspect public class ExeTimeAspect { @Pointcut("execution(public * chap07..*(..))") private void publicTarget() { } execution 명시자는 Advice를 적용할 메서드를 지정할 때 사용합니다. 기본형식 execution(수식어패턴? 리턴타입패턴 클래스이름패턴?메서드이름패턴(파라미터패턴)) '수식어패턴'은 생략가능하며 public, protected 등이 옵니다. 스프링 AOP는 public 메서드에만 적용할 수 있기 때문에 사실상 public만 의미가 있습니다. '리턴타입패턴'은 리턴 타입을 명..
· Spring
[Spring] Spring AOP 구현해보기 (@Aspect, @Pointcut, @Around) 이전 글 [Spring] Spring AOP AOP AOP : Aspect Oriented Programming의 약자로, 여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 재사용성을 높여주는 프로그래밍 기법입니다. AOP는 핵심 기능과 공통 기능 muscleking3426.tistory.com 프록시 생성 방식 package config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context...
runnnerDevHong
'스프링' 태그의 글 목록