전체 글
-
Window Docker Jenkins 설치 및 github-webhook 연결Dev 2021. 8. 25. 18:08
Github 를 이용하여 push 시 자동으로 Hook 으로 신호가 가서 Jenkins 빌드까지 docker jenkins 컨테이너 생성 및 실행 docker run -itd --name jenkins-test -p 9090:8080 jenkins/jenkins:lts //-itd : //-p : 호스트와 컨테이너 간의 포트 배포/바인드를 위해 사용 (포트포워딩) 옵션 itd (interactive terminal detach) 컨테이너가 백그라운드로 작동하며, 표준 입력 터미널이 열린 상태가 되어 컨테이너가 계속 유지 된다. p 호스트와 컨테이너 간의 포트 배포/바인드를 위해 사용한다. (포트포워딩 용) Jenkins 설정 1. Administrator password 를 이용하여 Jenkins 로그인..
-
냄새와 휴리스틱Java 2021. 7. 22. 16:01
주석 부적절한 정보 주석은 코드와 설계에 기술적인 설명을 부연하는 수단이다. 쓸모 없는 주석 오래된주석, 잘못된 주석, 중복된 주석, 성의없는 주석은 빠르게 삭제하자 주석 처리된 코드 주석으로 처리된 코드는 읽는 사람을 헷갈리게 하며, 자신이 포함된 모듈을 오염시킨다. 즉시 삭제하자 - 정말 필요한 코드라면 소스코드 관리 시스템에서 이전버전을 가져오면 된다. 환경 빌드 및 테스트 빌드 및 테스트는 모두 한 단계, 한 명령으로 끝내야 한다. - 빌드의 경우 소스 코드 관리 시스템에서 이것저것 따로따로 체크아웃할 필요가 없어야 한다. - 테스트의 경우 한 번에 실행하는 능력은 아주 근본적이고 아주 중요하기에 그 방법이 빠르고, 쉽고, 명백해야 한다. 함수 인수 함수에서 인수 개수는 적을수록 좋으며, 넷이 넘..
-
Spring Security[2]Spring 2021. 7. 19. 11:24
스프링 시큐리티 주요 아키텍처 이해 DelegatingFilterProxy, FIlterChainProxy DelegatingFilterProxy 서블릿 필터는 스프링에서 정의된 빈을 주입해서 사용할 수 없음 특정한 이름을 가진 스프링 빈을 찾아 그 빈에게 요청을 위임 springSecurityFilterChain 이름으로 생성된 빈을 ApplicationContext 에서 찾아 요청을 위임함 실제 보안처리를 하지 않음 FilterChainProxy springSecurityChain 의 이름으로 생성되는 필터 빈 DelegatingFIlterProxy 으로 부터 요청을 위임 받고 실제 보안을 처리 스프링 시큐리티 초기화 시 생성되는 필터들을 관리하고 제어 스프링 시큐리티가 기본적으로 생성하는 필터 설정..
-
Spring Security[1]Spring 2021. 7. 19. 11:23
Spring Security 프로젝트 구성 및 의존성 추가 org.springframework.boot spring-boot-starter-security 스프링 시큐리티의 의존성 추가 시 서버가 기동되면 스프링 시큐리티의 초기화 작업 및 보안 설정이 이루어진다. 별도의 설정이나 구현을 하지 않아도 기본적인 웹 보안 기능이 현재 시스템에 연동되어 작동한다. 모든 요청은 인증이 되어야하 자원에 접근이 가능 인증 방식 폼 로그인 httpBasic 로그인 기본 로그인 페이지 제공 기본 계정 한 개 제공 ID : user PWD : 랜덤 문자열 문제점 계정 추가 권한 추가, DB 연동 등 기본적인 보안 기능 외에 시스템에서 필요로 하는 더 세부적이고 추가적인 보안기능이 필요 사용자 정의 보안 기능 구현 secu..
-
토비의 스프링[8] 스프링이란 무엇일까?Spring 2021. 7. 19. 11:08
스프링 프레임워크 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 애플리케이션의 전 영역을 관통하는 일관된 프로그래밍 모델과 핵심 기술을 바탕으로 해서 각 분야의 특성에 맞는 필요를 채워주고 있기 때문에, 애플리케이션을 빠르고 효과적으로 개발할 수가 있다. 이것이 스프링이 애플리케이션 프레임워크라 불리는 이유다. 스프링을 MVC프레임워크 혹은 JDBC/ORM 지원 프레임워크라고 생각하는 것은 스프링이 다루는 일부 영역만 봤기 때문이다. 스프링을 IoC/DI 프레임워크나 AOP 툴이라고 보는 이유는 스프링이 제공하는 핵심 기술에만 주목했기 때문이다. 스프링의 일차적인 존재 목적은 핵심 기술에 담긴 프로그래밍 모델을 일관되게 적용해서 엔터프라이즈 애플리케이션 전 계층과 전 영역..
-
토비의 스프링[7] 스프링 핵심기술과 응용Spring 2021. 4. 14. 22:18
SQL과 DAO의 분리 현재 기능이 변경되어 SQL이 변경될 경우 SQL을 담고 있는 DAO 코드가 수정될 수밖에 없다. XML 설정을 이용한 분리 가장 손쉽게 SQL을 분리하는 방법으로는 SQL을 스프링의 XML 설정파일로 빼내는 것이다. 개별 SQL 프로퍼티 방식 UserDao 메소드의 SQL문장을 제거하고 외부로부터 DI 받은 SQL문장을 이용해서 쿼리를 실행한다. SQL 맵 프로퍼티 방식 SQL이 점점 많아지면 그때마다 DAO에 DI용 프로퍼티를 추가하기가 상당히 귀찮기에 스프링 XML 설정을 통한 컬렉션으로 담아주는 방법을 시도하여 SQL을 담을 XML 설정 프로퍼티 타입을 스프링이 제공하는 map과 entry를 이용하여 userDao빈의 프로퍼티를 수정해보자. SQL 제공 서비스 스프링의 설정..
-
토비의 스프링[6] AOPSpring 2021. 3. 8. 04:39
서론 AOP는 IoC/DI, 서비스 추상화와 더불어 스프링의 3대 기반기술의 하나이며, 스프링 기술중 가장 난해한 용어 및 개념을 가지고 있어서 이해하기 가장 어렵다. 스프링에서 가장 인기있는 AOP의 적용 대상은 트랜잭션 기능이기에 앞서서 다룬 서비스 추상화를 통해 많은 근본적인 문제를 해결했던 트랜잭션 경계설정 기능을 AOP를 이용해 더욱 세련되고 깔금한 방식으로 바꿔보자. 트랜잭션 코드의 분리 스프링이 제공하는 깔끔한 트랜잭션 인터페이스를 썼음에도 비즈니스 로직이 주인이어야할 메소드 안에는 길고 무시무시하게 생긴 트랜잭션 코드가 더 많은 자리를 차지하고 있다. public void upgradeLevels() throws Exception { // 트랜잭션 로직 PlatformTransactionM..
-
토비의 스프링[5] 서비스 추상화Spring 2021. 2. 25. 04:41
서론 여태 제작한 DAO에 트랜잭션을 적용해보며 스프링이 어떻게 성격이 비슷한 여러 종류의 기술을 추상화하고 일관된 방법으로 사용할 수 있도록 지원하는지 알아보자. 사용자 레벨 관리 기능 추가 지금까지 제작한 UserDao는 User오브젝트에 대한 CRUD를 제외하면 아무 비즈니스 로직도 가지고 있지 않다. 그렇기에 여기에 사용자 활동내역에 따른 레벨을 조정해주는 기능과 사용자 활동내역을 알 수 있도록 몇개의 필드를 추가해보자. package com.example.toby.초난감DAO.user; import lombok.*; @Getter @Setter @ToString @NoArgsConstructor @AllArgsConstructor public class User { private String i..