본문 바로가기

나만의 작업/Spring

[Junit5] SpringBoot2+Junit5 에서 TestEngine with ID 'junit-jupiter' failed to discover tests 오류 해결방법 Spring Boot 의 기본 junit4 대신 junit5(2019.7월 말 현재 최신버전인 junit 5.5.1 )를 쓰기 위해 설정하는 도중 만난 오류가 있어서 공유합니다. 개발 환경 IngelliJ IDEA gradle 5.0 Spring Boot 2.1.0.RELEASE Spring Boot 의 기본 junit4 대신 junit5(2019.7월 말 현재 최신버전인 junit 5.5.1 )를 쓰기 위해 설정하는 도중 만난 오류가 있어서 공유합니다. Spring Boot 의 기본 junit4 버전 제외. (build.gradle) testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude module: 'juni..
[Spring] Lazy Initialization in Spring Boot 2.2 - 번역 Lazy Initialization in Spring Boot 2.2 https://spring.io/blog/2019/03/14/lazy-initialization-in-spring-boot-2-2 위의 글을 읽다가 조금만 번역해 보았습니다. 잘못된 부분이 있을 수 있으니 있다면 제보해주세요~ What Does it Mean to be Lazy? Spring Framework는 기본적으로 application context가 refresh될때 context의 모든 bean을 생성하고 dependency들을 inject(주입)된다. 대조적으로 bean definition이 느리게 초기화되도록 설정되면, 필요할 때까지는 dependency가 inject되지 않는다. Lazy Initialization 활성..
[SpringSecurity] Authentication(인증) 관련 클래스와 처리 Spring Security에 대해 큰 흐름은 알지만, 처음부터 적용하는게 아니면 어떤 권한을 주고 권한 체크하는 로직만 추가하거나 수정하며 생각없이 쓰게 되는데,어떤 흐름으로 되는지 전보다 좀 더 살펴볼 기회가 있었고 Spring Security의 각 클래스들이 어떤 일을 하는지에 대해 두서없이 소소하게 정리해봅니다.이 글에서 Spring Security Version은 3.2.5 버전이 기준입니다.1. 인증과 인가란 무엇인가? 인증 절차를 거친후 인가 절차를 진행!1) 인증(Authentication) : 해당 사용자가 본인이 맞는지를 확인하는 절차.2) 인가(Authorization) : 인증된 사용자가 요청된 자원에 접근가능한지를 결정하는 절차.2. 인증 방식1) credential 기반 인증 :..
[Spring] @Autowired의 Before/After Spring framework 2.5에 추가된 @Autowired annotation에 관한 글을 보고 정리. 알고있는 내용이기에~ 그냥 가볍게 Before 와 After code Before - @Autowired annotation이 없었을 때 applicationContext.xml에서 설정 EmpDao의 bean을 inject public class EmpManager { private EmpDao empDao; public EmpDao getEmpDao() { return ..
[Spring] 스프링에서 VelocityTools 환경설정 스프링에서 벨로시티 뷰 템플릿 엔진을 사용하고 있는데 여기에 편리한 tools를 사용하기 위해서필요한 설정을 기억하기 위해 기록합니다.VelocityTools는 벨로시티 템플릿에서 숫자나 날짜, url등의 포맷팅을 지원하는 툴이고,VelocityTools프로젝트에는 GenericTools, VelocityView, VelocityStruts 세개의 부분으로 나눠져 있습니다.보통 GenericTools를 많이 쓸일이 많기 때문에~ 조금 정리해보면, Generic Tools에는, DateTool A tool for manipulating and formatting dates. MathTool A tool for performing floating point math. NumberTool A tool for ..
[Spring] 스프링 MVC를 이용한 웹 요청 처리 스프링 MVC를 이용한 웹 요청 처리구성요소DispatcherServlet : 클라이언트의 요청을 전달받음. 컨트롤러에게 클라이언트의 요청을 전달하고 컨트롤러가 리턴한 결과 값을 view에 전달하여 알맞은 응답을 생성하도록 한다.HandlerMapping : 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할 지를 결정Controller : 클라이언트의 요청을 처리한 뒤, 그 결과를 DispatcherServlet에 알려줌.ModelAndView : 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담는다.ViewResolver : 컨트롤러의 처리 결과를 생성할 뷰를 결정View : 컨트롤러의 처리 결과 화면을 생성캐릭터 인코딩 처리를 위한 필터 설정요청 파라미터의 캐릭터 인코딩이 ISO-8859-..
[Spring] Bean과 BeanFactory의 후처리 빈의 후처리 스 프링은 빈의 생명주기에 끼어들어 빈의 설정을 재검토하거나 바꿀 수 있는 2개의 기회를 제공한다. 후처리는 어떤 이벤트가 발생한 후에 처리되는 것이라고 추측할 수 있다. 이벤트란 빈이 설정되거나 인스턴스화되는 것을 말한다. BeanPostProcessor 인터페이스는 빈이 생성되거나 묶인 후에 변경할 수 있는 두개의 기회를 제공 Interface BeanPostProcessor에서는 두개의 메소드를 제공한다 postProcessBeforeInitialization : 빈이 초기화(afterPropertiesSet(), 빈의 커스텀 init-method 호출)되기 직전에 호출 postProcessAfterInitialization : 빈이 초기화된 직후에 호출 빈 팩토리의 후처리 BeanFa..
[Spring] 자동 묶기(Autowire) 자동 묶기(Autowire) 자동 묶기의 네 종류 byName : 묶고자 하는 특성의 이름과 동일한 이름이나 ID를 가진 빈을 컨테이너에서 찾는다. 빈을 찾지 못하면 그 특성을 묶이지 않은 채로 남는다. byType : 묶 고자 하는 특성의 타입과 동일한 타입을 가진 빈을 컨테이너에서 찾는다. 빈을 찾지 못하면 그 특성은 묶이지 않은 채로 남고, 하나 이상의 빈을 찾게 되면 org.springframework.beans.factory.UnsatisfiedDependencyException을 던진다. Constructor : 묶고자 하는 빈의 생성자 중 하나의 파라미터와 맞는 하나 이상..
[Spring] 세터 주입(Setter Injection)의 대안 세터 주입(Setter Injection)의 대안 - 생성자 주입(Constructor Injection) 세터 주입은 빈 특성을 설정하고 묶을 수 있는 직관적인 방법이지만, 한 가지 단점은 변경될 수 있는 모든 특성이 세터 메소드를 통해서 사용할 수 있다고 가정하는 것에 있다. 하지만 빈이 이와 같은 방식으로 작동하기를 원하지 않을 때, 이런 유형의 빈이 인스턴스화될 때에는 어떤 특성도 설정될 수 없으며, 따라서 빈이 유효하지 않은 상태로 있을 가능성이 있다. 어떤 특성들은 빈이 생성될 때 한 번만 설정되고 그 이후에는 변경될 수 없도록 만들고 싶은 경우도 있다. 이는 세터를 통해 모든 특성을 공개하는 경우에는 곤란해진다. 대안은 일부 특성들은 생성자 를 통해 설정될 수 있도록 빈을 설계하는 것이다. ..
[Spring] 빈 묶기(Bean wiring) 빈 묶기(Bean wiring) XML로 묶기 : 다음을 이용해 스프링 컨테이너가 XML을 통한 빈 묶기를 지원한다. XmlBeanFactory ClassPathXmlApplicaionContext FileSystemXmlApplicationContext XmlWebApplicationContext 프로토타입과 싱글톤 비교 스프링의 모든 빈은 싱글톤. getBean()의 호출에 의해서든 묶기를 통해서든 간에, 컨테이너가 빈을 배포할 때에는 항상 그 빈의 완전히 동일한 인스턴스를 내줄 것이다. scope="singleton"scope="prototype" 프로토타입 빈을 정의하는 것이 유리할 때 프로토타입을 정의한다는 것은 실제 하나의 빈을 정의하는 것이 아닌, 청사진을 정의한다는 의미다. 그 다음엔 그 ..
[Spring] 스프링 컨테이너의 두 종류 스프링 컨테이너의 두 종류 컨테이너 안의 빈(Bean) 컨 테이너는 스프링 프레임워크의 핵심이다. 스프링 컨테이너는 제어 역행(IoC)을 사용해 애플리케이션을 구성하는 컴포넌트들을 관리한다. 여기에는 협력하는 컴포넌트간의 연관관계를 생성하는 것이 포함된다. 그렇게 함으로써 객체는 좀더 명확하게 이해할 수 있고, 재사용이 가능해지며, 단위테스트가 쉬워진다. 스프링 컨테이너의 두 종류 org .springframework.beans.factory.BeanFactory 인터페이스로 정의되는 빈 팩토리 기본적인 의존성 주입을 지원하는 가장 간단한 형태의 컨테이너 org .springframework.context.ApplicationContext 인터페이스로 정의되는 어플리케이션 컨텍스트. 프로퍼티 파일의 텍스..
[Spring] Spring 환경설정 /**************************************************************************스프링 공부하면서 정리한 내용을 그냥 올려봅니다.혼자 놀다가 중간에 에러난 부분도 기억삼아 올려놓은것이어서내용이 틀릴수도 있답니다. 이글은 "스프링 인 액션" 책을 열심히 보며 쓴 글입니다~@author 버리**************************************************************************/프로젝트 설정 1. Spring 다운로드(http://www.springframework.org/download)최신버젼을 다운로드하고, 사용할 JAR파일들을 dist 디렉토리에서 선택한 다음에 빌드 클래스 경로와 애플리케이션 클래스 경..
[Spring] Hitting the database * Hitting the database 1) Spring의 DataAccessException java.sql.SQLException은 checked Exception입니다. 즉, 개발자가 try-catch로 잡아줘야 합니다. 이는 코드를 난잡하게 만들수 있습니다. 그리고 SQLException이 제공하는 예외는 Spring에 비해서 매우 종류가 많지 않습니다. DataAccessException은 SQLException이나 HibernateException등과 같이 특정 기술에 의존적인 예외를 던지지 않기때문에, 데이터 접근 인터페이스가 구현에 의존적인 예외가 아닌 스프링의 일반적인 DataAccessException을 던지게 함으로써, 특정한 퍼시스턴스 구현에 결합되는 일을 방지합니다. DataAc..