Spring|Spring-boot117 Batch Hello World 스프링 부트를 사용해 실습을 진행할 것이다. 의존성은 다음과 같다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-batch' implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' runtimeOnly 'mysql:mysql-connector-java' annotationProcessor 'o.. 2021. 2. 27. Spring Batch Batch가 뭘까? 큰 단위의 작업을 일괄 처리할 수 있다는 것입니다. 일괄 처리한다는 것은 컴퓨터의 자원을 최대로 사용해서 무거운 작업을 일괄처리할 수 있다는 것을 의미합니다. 보통 비실시간성 처리에 사용하게 됩니다. 배치는 컴퓨터 자원이 많이 남는 시간 혹은 다른 배치를 위한 컴퓨터 자원을 사용하는데, 대용량 데이터 계산, 정산, 통계, 데이터베이스, 변환 등에 사용되게 됩니다. 사용자와 상호 작용으로 주거니 받거니 하는 것보단 스케줄러와 같은 시스템에 의해 할당받아 실행되는 대상입니다. - crontab, jenkins .... 이러한 배치 처리를 하기 위한 Spring Framework 기반으로 만든 Batch처리 기술을 Spring Batch라고 합니다. spring의 여러 특징을 모두 포함하고.. 2021. 2. 27. [Spring ] 빈 객체의 초기화와 소멸 스프링 컨테이너는 빈 객체의 라이프사이클을 관리한다. 객체 생성 -> 의존 설정 -> 초기화 -> 소멸 단계를 거친다. 스프링 컨테이너를 초기화 활 때 스프링 컨테이너는 가장 먼저 빈 객체를 생성하고 의존 주입을 한다. 의존 자동 주입을 통한 의존 설정이 이 시점에 실행되며, 모든 의존 설정이 완료되면 빈 객체를 초기화하기 위해 스프링은 빈 객체의 지정된 메서드를 호출한다. 스프링 컨테이너가 close() 메서드로 종료될 시점에 컨테이너는 빈 객체의 소멸을 처리한다. 이때에도 지정된 메서드를 호출한다. 지정된 메서드는 다음과 같다. org.springframework.beans.factory.InitializingBean , org.springframework.beans.factory.Disposable.. 2021. 1. 25. [Spring] 의존 자동 주입 대상의 필수 유무설정 스프링 5 버전부터는 @Autowired 애노테이션의 required 속성을 false 하는 대신 의존 주입 대상에 자바 8의 Optional을 사용할 수 있다. 자동 주입 대상 타입이 Optional인 경우, 일치하는 빈이 존재하지 않으면 값이 없는 Optional을 인자로 전달하여 exception이 발생하지 않으며, 일치하는 빈이 존재하면 해당 빈을 값으로 갖는 Optional을 인자로 전달한다. @Autowired(required = false) public void setDateFormatter(DateTimeFormatter dateTimeFormatter) { this.dateTimeFormatter = dateTimeFormatter; } 다음과 같은 코드는 Optional을 사용하면 다음.. 2021. 1. 25. JWT(2) 실제로 Json Web Token을 적용시키는 연습을 합니다. Authorization은 인가입니다. 인증과 연결되어 사용됩니다. 인증은 사용자가 누구인지 증명하는 단계이고 여기서 발급이 된 JWT를 이용해서 사용자가 접근할 수 있는 권한을 확인하는 것이 인가 Authorization입니다. Stateless 기존 웹개발에서는 상태를 유지하기 위해 session을 사용했지만 이번에는 모든 요청에 JWT을 확인해서 응답할 것입니다. 이러기 위해서 acessToken을 http Header를 통해서 전달할 것입니다. 모든 요청에대해서 토큰을 처리할 것이므로 Filter를 통해 토큰을 분석해서 사용자를 확인할 것입니다. BasicAuthenticationFilter는 Spring에서 제공해주는 인증 필터입니다.. 2020. 8. 18. Json Web Tokens(1) JWT는 토큰 기반 인증 시스템의 구현체입니다. 그렇다면 토큰 기반 인증은 무엇이고 왜 사용하게 되었을까요? 서버 기반 인증 기존의 인증 시스템에서는 유저들의 정보를 기억하고 있어야 했습니다. 서버 상에 존재하는 세션 저장소를 읽어 인증을 유지하도록 했습니다. 이러한 서버 기반 인증에는 문제점이 존재했습니다. 세션 유저가 인증을 할 때, 서버는 이 기록을 서버에 저장을 해야 합니다. 대부분에는 메모리에 저장을 하는데 로그인 중인 유저의 수가 늘어난다면 서버의 램이 과부하가 될 수 있습니다. 이러한 방식을 피하기 위해 데이터 베이스에 저장을 한다면 데이터 베이스 성능에 무리를 줄 수 있습니다. 확장성 세션을 사용하면 서버를 확장하는 것이 어려워집니다. 여기서 서버의 확장이란 서버의 사양을 업그레이드하는 것.. 2020. 8. 14. 회원가입을 위한 Spring security 웹서비스 중 회원가입에서 비밀번호에 대한 값은 상당히 보안적으로 중요합니다. 사용자가 입력한 정보들 중 password를 그대로 데이터베이스에 입력하게 되면 보안적으로 상당히 위험합니다. 따라서 우리는 입력한 비밀번호를 hashing 해서 사용하게 되는데 저는 프로젝트를 진행하면서 BCrypt방식을 사용할 것입니다. bcrypt는 비밀번호 해시함수로 Niels Provos와 David Mazieres에 의해 만들어졌으며 Blowfish라는 암호에 기반하였다. Bcrypt는 조정할 수 있는 해시 알고리즘을 써서 패스워드를 저장한다. Bcrypt는 패스워드를 해싱할 때 내부적으로 랜덤 한 솔트를 생성하기 때문에 같은 문자열에 대해서 다른 인코드 된 결과를 반환한다. 하지만 공통된 점은 매번 길이가 60인 S.. 2020. 8. 9. Gradle 멀티 모듈 멀티 모듈 프로젝트란? 멀티 모듈 프로젝트로 하나의 프로젝트를 진행하면서 이전에 독립된 프로젝트를 만들어보고 그 차이와 장단점에 대해서 제가 겪었던 이야기를 토대로 글을 작성하려고 합니다. 어느 정도 규모가 되는 서비스는 프런트 서버와 백 서버를 별도로 구성하여 사용한다고 한다. 일정 수준 트래픽을 감당하기 위해서 인데 내 생각은 요청을 받는 프런트 서버가 다시 클라이언트가 되어 백엔드 서버에 요청을 하여 응답을 처리하도록 하는 것 같다. (하나의 서버로 전부 처리할 경우 트래픽을 감당하지 못할 수도 있으므로?) 이럴 경우 MVC구조를 사용할 경우 프런트 = controller 백엔드 = service은 의존적인데 어떻게 둘을 연결할 것인가 공통적으로 사용되는 클래스를 연결해 주어야 한다. 공통적으로 사.. 2020. 8. 6. Lombok Lombok은 annotation Processor를 이용해 자동으로 코드를 만들어 줍니다. 예를 들면 @setter ,@getter를 사용하면 public void setMemberId(){} 와같은 코드를 작성하지 않아도 됩니다. import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Transient; import java.util.ArrayList; import java.util.List; @Entity public class Restaurant { @Id @GeneratedValue private Long id; privat.. 2020. 8. 3. [Spring] Interceptor , ArgumentResolver 인터셉터는 Dispatcher servlet에서 Handler 즉 Controller로 요청을 보낼 때 또는 그 반대일 경우에 동작합니다. 비슷한 기능으로는 servlet filter가 있는 데요 서블릿 필터는 dispatcherServlet이 실행되기 이전에 발생하고 인터셉터는 dispatcherServlet 이후 handler로 넘어가기 전에 발생을 합니다. Interceptor 가 여러 개라면? xml 설정이라면 정의된 순서대로 동작합니다. java bean 설정이라면 WebMvcConfigurerAdapter를 상속받은 addInterceptors에 추가되는 대로 일 것이다. HandlerInterceptorAdapter를 상속받는 interceptor클래스를 생성합니다. package kr.or.. 2020. 7. 20. 이전 1 ··· 6 7 8 9 10 11 12 다음