전체 글
-
이번 시간에는 Spring MVC에 대해 살펴보자. Spring MVC는 Front Controller 패턴을 적용한 웹 애플리케이션 개발 프로젝트이다. 이를 위해 필요한 요소들에 대해 살펴보자.Spring MVC의 구성 요소 DispatcherServletSpring MVC는 스프링을 통해서 웹 MVC 애플리케이션을 개발하기 위한 아키텍쳐로 [Front Controller 패턴]을 사용한다. Front Controller 패턴은 모든 클라이언트의 요청을 단일 진입점인 Front Controller가 처리하는 패턴으로 요청 처리 전/후 공통 모듈을 처리하기 용이하다.Spring MVC가 프론트 컨트롤러 역할을 담당하는 Servlet은 DispatcherServlet 이다. 이 서블릿은 spring-..
01. Spring MVC 개요이번 시간에는 Spring MVC에 대해 살펴보자. Spring MVC는 Front Controller 패턴을 적용한 웹 애플리케이션 개발 프로젝트이다. 이를 위해 필요한 요소들에 대해 살펴보자.Spring MVC의 구성 요소 DispatcherServletSpring MVC는 스프링을 통해서 웹 MVC 애플리케이션을 개발하기 위한 아키텍쳐로 [Front Controller 패턴]을 사용한다. Front Controller 패턴은 모든 클라이언트의 요청을 단일 진입점인 Front Controller가 처리하는 패턴으로 요청 처리 전/후 공통 모듈을 처리하기 용이하다.Spring MVC가 프론트 컨트롤러 역할을 담당하는 Servlet은 DispatcherServlet 이다. 이 서블릿은 spring-..
2020.06.29 -
There is no PasswordEncoder mapped for the id "null" 상황 발생 PasswordEncoder의 matches 메서드를 이용해 원문과 인코딩된 문장을 비교할 때 인코딩 값으로 null 이 들어온 경우 java.lang.IllegalArgumentException이 발생하면서 메시지 출력됨. // selected.getUpass() 값이 null인 경우에 발생함 if (pEncoder.matches(user.getUpass(), selected.getUpass())) { selected.setUpass(""); } 대책 전달된 파라미터에 null 값이 없는지 확인
TThere is no PasswordEncoder mapped for the id "null" 상황 발생 PasswordEncoder의 matches 메서드를 이용해 원문과 인코딩된 문장을 비교할 때 인코딩 값으로 null 이 들어온 경우 java.lang.IllegalArgumentException이 발생하면서 메시지 출력됨. // selected.getUpass() 값이 null인 경우에 발생함 if (pEncoder.matches(user.getUpass(), selected.getUpass())) { selected.setUpass(""); } 대책 전달된 파라미터에 null 값이 없는지 확인
2020.06.28 -
pageHelper 웹 페이지를 만들면서 페이징 처리는 반드시 있어야 하는 내용이다. 하지만 DB마다 다른 쿼리를 사용해야하는 점이나 전체 페이지, 현재 페이지, 페이지당 데이터 수 등을 계산하기가 쉽지않다. JPA에는 별도로 Paging 관련 기능이 있는데 MyBatis에서는 관련 기능을 찾지 못하다 최근에 PageHelper라는 녀석이 눈에 띄어서 포스팅해본다. https://github.com/pagehelper/Mybatis-PageHelper pagehelper/Mybatis-PageHelper Mybatis通用分页插件. Contribute to pagehelper/Mybatis-PageHelper development by creating an account on GitHub. github.c..
Spring + mybatis + PageHelperpageHelper 웹 페이지를 만들면서 페이징 처리는 반드시 있어야 하는 내용이다. 하지만 DB마다 다른 쿼리를 사용해야하는 점이나 전체 페이지, 현재 페이지, 페이지당 데이터 수 등을 계산하기가 쉽지않다. JPA에는 별도로 Paging 관련 기능이 있는데 MyBatis에서는 관련 기능을 찾지 못하다 최근에 PageHelper라는 녀석이 눈에 띄어서 포스팅해본다. https://github.com/pagehelper/Mybatis-PageHelper pagehelper/Mybatis-PageHelper Mybatis通用分页插件. Contribute to pagehelper/Mybatis-PageHelper development by creating an account on GitHub. github.c..
2020.06.23 -
이번 시간에는 Spring Data project에 대해 살펴보자.Spring Data Spring Data란?https://spring.io/projects/spring-dataSpring Data는 전통적인 데이터 저장소에 대한 사용 특성을 유지하면서 여러 형태의 데이터 저장소를 활용하기 위한 프로젝트이다.프로그램에서 데이터를 영속적으로 저장하기 위해 과거에는 주로 관계형 데이터베이스를 많이 사용했고 데이터를 관리하기 위해 JDBC 기반의 기술들이 발전했지만 최근에는 비 관계형 데이터베이스, 맵 리듀스 프레임워크, 클라우드 기반 서비스들이 많이 등장했다. Spring Data는 다양한 데이터 저장소에 접근하는 다양한 기술들을 포함하는 포괄적인 프로젝트이다.Spring Data를 사용하면 MySql ..
02. Spring Data와 Spring Data JPA이번 시간에는 Spring Data project에 대해 살펴보자.Spring Data Spring Data란?https://spring.io/projects/spring-dataSpring Data는 전통적인 데이터 저장소에 대한 사용 특성을 유지하면서 여러 형태의 데이터 저장소를 활용하기 위한 프로젝트이다.프로그램에서 데이터를 영속적으로 저장하기 위해 과거에는 주로 관계형 데이터베이스를 많이 사용했고 데이터를 관리하기 위해 JDBC 기반의 기술들이 발전했지만 최근에는 비 관계형 데이터베이스, 맵 리듀스 프레임워크, 클라우드 기반 서비스들이 많이 등장했다. Spring Data는 다양한 데이터 저장소에 접근하는 다양한 기술들을 포함하는 포괄적인 프로젝트이다.Spring Data를 사용하면 MySql ..
2020.06.22 -
Spring Security 기본 로그인 처리 Spring Boot Securityspring-boot-starter-security를 pom.xml에 추가하면 SecurityAutoConfiguration이 동작해서 별도의 설정을 하지 않아도 웹 리소스를 사용하기 위해서는 로그인 처리가 필요하다. @SpringBootApplication에 있는 @EnableAutoConfiguration에 의해 Security에 대한 설정이 자동으로 이뤄지기 때문이다. 아직 본격적으로 security 를 처리할 단계가 아니라면 다음과 같이 처리할 수 있다. username, password 지정 application.properties에 다음과 같이 사용자 계정 정보를 추가해준다. spring.security.user..
Spring Security 기본 로그인 처리Spring Security 기본 로그인 처리 Spring Boot Securityspring-boot-starter-security를 pom.xml에 추가하면 SecurityAutoConfiguration이 동작해서 별도의 설정을 하지 않아도 웹 리소스를 사용하기 위해서는 로그인 처리가 필요하다. @SpringBootApplication에 있는 @EnableAutoConfiguration에 의해 Security에 대한 설정이 자동으로 이뤄지기 때문이다. 아직 본격적으로 security 를 처리할 단계가 아니라면 다음과 같이 처리할 수 있다. username, password 지정 application.properties에 다음과 같이 사용자 계정 정보를 추가해준다. spring.security.user..
2020.06.21 -
advice는 실행되는 시점에 따라 여러가지 타입으로 작성할 수 있다. 이번 포스트에서는 다섯가지 advice의 타입에 대해 살펴보자. advice 타입advice가 동작하기 위해서는 어떤 시점에 advice를 실행할 것인가를 결정해야 한다. Spring에서는 다섯가지 annotation으로 이 시점을 설정할 수 있다.애너테이션설명@Before타겟 메서드 호출 전 advice 실행@AfterReturning타겟 메서드가 정상 종료(return) 후 advice 실행@AfterThrowing타겟 메서드에서 예외가 던져졌을 때(throws XXException) advice 실행@After타겟 메서드 성공 여부(return or throws XXException)와 무관하게 언제나 advice 실행@Arou..
04. advice의 타입advice는 실행되는 시점에 따라 여러가지 타입으로 작성할 수 있다. 이번 포스트에서는 다섯가지 advice의 타입에 대해 살펴보자. advice 타입advice가 동작하기 위해서는 어떤 시점에 advice를 실행할 것인가를 결정해야 한다. Spring에서는 다섯가지 annotation으로 이 시점을 설정할 수 있다.애너테이션설명@Before타겟 메서드 호출 전 advice 실행@AfterReturning타겟 메서드가 정상 종료(return) 후 advice 실행@AfterThrowing타겟 메서드에서 예외가 던져졌을 때(throws XXException) advice 실행@After타겟 메서드 성공 여부(return or throws XXException)와 무관하게 언제나 advice 실행@Arou..
2020.06.20 -
이번 포스트에서는 advice를 어떤 target의 메서드 즉 join point에 적용 할 것인지 결정하기 위한 pointcut 작성에 대해 살펴보자. Pointcut(포인트컷) pointcut이란?Pointcut은 advice를 적용할 target의 메서드를 결정하는 메서드 선정 알고리즘으로 @Before 등 애너테이션의 value 값이다. pointcut을 작성 할 때는 execution, within, bean 등 지정자와 함께 사용한다.execution: 메서드의 signature 기반으로 한 정교한 포인트컷 작성법으로 가장 많이 사용된다.@Before("execution(String *..SimpleBean.getName())")within: 빈 클래스 기반으로 포인트컷을 작성한다. 작성 방식..
03. pointcut 작성이번 포스트에서는 advice를 어떤 target의 메서드 즉 join point에 적용 할 것인지 결정하기 위한 pointcut 작성에 대해 살펴보자. Pointcut(포인트컷) pointcut이란?Pointcut은 advice를 적용할 target의 메서드를 결정하는 메서드 선정 알고리즘으로 @Before 등 애너테이션의 value 값이다. pointcut을 작성 할 때는 execution, within, bean 등 지정자와 함께 사용한다.execution: 메서드의 signature 기반으로 한 정교한 포인트컷 작성법으로 가장 많이 사용된다.@Before("execution(String *..SimpleBean.getName())")within: 빈 클래스 기반으로 포인트컷을 작성한다. 작성 방식..
2020.06.20 -
이번 포스트에서는 간단한 Aspect를 작성해 보고 어떤 방식으로 동작하는지 살펴보자. Aspect 작성 테스트용 빈 등록 및 단위 테스트퇴근까지 30분!! 퇴근 후 친구와의 약속을 떠올리며 다음의 핵심 비지니스 로직을 가지는 계산용 빈을 만들었다.@Componentpublic class CalculatorBean { public double divide(int a, int b){ return a/b; } public int add(int... args){ return Arrays.stream(args).sum(); }}이제 위 빈이 잘 동작하는지 테스트 해보자. 테스트만 통과하면 퇴근 각이다.!@SpringBootTest@Slf4j@ActiveProfile..
02. Aspect 작성과 동작이번 포스트에서는 간단한 Aspect를 작성해 보고 어떤 방식으로 동작하는지 살펴보자. Aspect 작성 테스트용 빈 등록 및 단위 테스트퇴근까지 30분!! 퇴근 후 친구와의 약속을 떠올리며 다음의 핵심 비지니스 로직을 가지는 계산용 빈을 만들었다.@Componentpublic class CalculatorBean { public double divide(int a, int b){ return a/b; } public int add(int... args){ return Arrays.stream(args).sum(); }}이제 위 빈이 잘 동작하는지 테스트 해보자. 테스트만 통과하면 퇴근 각이다.!@SpringBootTest@Slf4j@ActiveProfile..
2020.06.18