응집도 응집도는 클래스나 메서드의 책임이 서로 얼마나 강하게 연결되어 있는지를 측정한다. 즉 어떤 것이 여기저기에 모두 속해있는지를 말한다. 이전 리팩터링 코드에서 BankStatementCSVParser의 응집도는 높다. 이 클래스에서 CSV 데이터 파싱 작업과 관련된 두 메서드를 한 그룹으로 만들었기 때문이다. 계산 연산을 하는 BankStatementProcessor라는 별도의 클래스를 추출해보자. public class BankStatementProcessor { private final List bankTransactions; public BankStatementProcessor(final List bankTransactions) { this.bankTransactions = bankTransa..
목표 단일 책임 원칙 (single responsibility principle) 줄여서 SRP KISS 원칙 CSV 파일을 읽어서 요구사항 구현하기 은행 입출금 내역의 총 수입과 총 지출 구하기 결과가 양수? 음수? 특정 달엔 몇 건의 입출금 내역 발생? 지출이 가장 높은 상위 10건? 돈을 가장 많이 소비하는 항목? 30-01-2017,-100,Deliveroo 30-01-2017,-50,Tesco 01-02-2017,6000,Salary 02-02-2017,2000,Royalties 02-02-2017,-4000,Rent 03-02-2017,3000,Tesco 05-02-2017,-30,Cinema KISS (Keep it short and simple!) 원칙을 이용해 일단 만들어보자. 응용프로그..
인증 API - 동시 세션 제어 동시 세션 제어란? 동일한 계정으로 인증을 받을 때 생성되는 세션의 허용 개수가 초과되는 경우에 어떻게 세션을 유지하는 것에 대한 제어를 말한다. 최대 세션 허용 개수가 1개라고 가정 (1) 이전 사용자 세션 만료 사용자 1이 로그인하고 서버에서 인증 성공 세션 생성 사용자 2가 로그인하면 이전 사용자였던 사용자1의 세션을 만료시킴 (2) 현재 사용자 인증 실패 사용자 1이 로그인하고 서버에서 인증 성공 세션 생성 사용자 2가 로그인 하려고하면 인증 예외가 발생 @Override protected void configure(HttpSecurity http) throws Exception { //동시 세션 제어 http .sessionManagement() .maximumS..
AnonymousAuthenticationFilter 익명 사용자를 위한 필터 처음 강의를 들을때 부터 익명 사용자? 이게 왜 필요한거지 하면서 들었던 기억이 난다. 이 필터가 하는 일은 많지는 않다. 보통 사용자가 인증을 받게되면 세션에 인증을 받은 유저 객체를 저장하고 다시금 사용자가 페이지에 접근하게되면 세션에 유저 객체가 null이 아니면 인증을 받은 사용자라고 하고 null이면 인증을 받지 않은 사용자라고 한다. AnonymousAuthenticationFilter는 익명사용자와 인증 사용자를 구분해서 처리하기 위한 용도로 사용 클라이언트가 request 요청이 들어오면 인증객체가 있는지 SecurityContext 에서 확인한다. 만약 있다면 다음 필터로 넘어가고 아니라면 익명사용자용 인증객체..
인증 API - Remember Me 인증과 RememberMeAuthenticationFilter Remember Me 기능이란? 쇼핑몰 같은 사이트 들어가 보면 자동 로그인 또는 사용자 아이디 기억하기 이런 기능과 유사한 기능이라고 생각하면 된다. 사용자는 요청시에 Http Header에 Remember me 토큰을 보낸다. (1) 세션이 만료되고 웹 브라우저가 종료된 후에도 애플리케이션이 사용자를 기억하는 기능이다. (2) Remember Me 쿠키에 대한 Http 요청을 확인한 후 토큰 기반 인증을 사용해 유효성을 검사하고 토큰이 검증되면 사용자는 로그인된다. tokenValiditySeconds는 토큰의 만료시간을 지정해줄 수 있다. 기본은 14일이다. user계정을 rememberMe 인증 시..
인증 API - Logout 클라이언트가 서버에 로그아웃을 요청을 보내면 서버는 세션을 무효화시키고 인증 토큰을 삭제 시킨다. 이때 인증 토큰이 저장되어있는 SecurityContext 객체도 삭제한다. 쿠키정보도 삭제할 수 있고 로그아웃 이후에 리다이렉트 할 페이지를 지정할 수도 있다. @Override protected void configure(HttpSecurity http) throws Exception { //로그아웃 http .logout() .logoutUrl("/logout") .logoutSuccessUrl("/login") .addLogoutHandler((request, response, authentication) -> { HttpSession session = request.ge..
옛날 어딘가에 정리했었던거 옮김. Bootstrap Modal을 쉽게 사용하게 해주는 BootBox.js 예제 Bootbox.js 소개 Bootbox.js는 필요한 DOM 요소 또는 JS 이벤트 핸들러를 생성, 관리 또는 제거하는 것에 대해 걱정할 필요없이 부트 스트랩 모달을 사용하여 프로그래밍 방식 대화 상자를 만들 수있는 작은 JavaScript 라이브러리이다. 공식사이트 Bootbox.js 사용방법 CDN https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/4.4.0/bootbox.min.js 다운로드 위의 공식사이트에가서 다운로드 받아서 본인의 소스에 추가해서 사용하면 된다. Bootbox.js는 bootstrap의 모달을 이용하는 것이므로 bootstrap...
- Total
- Today
- Yesterday
- mybatis config
- LocalDate
- Spring
- 프로페셔널 스튜던트
- Github Status
- Mac
- maven
- JavaScript
- 오라클
- input
- elasticsearch
- docker
- mybatis
- config-location
- intellij
- LocalDateTime
- jQuery
- 북리뷰
- springboot
- localtime
- oracle
- Spring Security
- 베리 심플
- Bash tab
- rocky
- svn
- Kotlin
- window
- Linux
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |