Spring 14

Pivotal Summit 2019 Seoul 참가기

화요일에 Pivotal Summit 2019 Seoul에 다녀왔다. https://connect.pivotal.io/summit_2019_seoul Pivotal Summit 2019 Pivotal Summit 2019 is coming to APJ! Join us for valuable facetime with expert Pivotal speakers and industry thought leaders in both traditional presentation and informal conversations. We'll discuss the latest developments in DevOps, CI/CD, application d connect.pivotal.io 왼쪽부터 폴 자코스키, 나, 마크 ..

[Spring] 배포 환경별 로그 (logging) 설정하기

배포 환경별 로그 설정하기 본 내용은 필자가 공부하면서 적용해본 것이므로 best practice가 아닐 수 있습니다. 본인의 프로젝트에 맞는 방향으로 참고만 하면 될 것 같네요. 지난 글에서는 젠킨스를 활용하여 배포까지 해보았다. https://pjh3749.tistory.com/261 [Spring] Jenkins(젠킨스)를 활용한 스프링부트 앱 간단 배포하기 젠킨스를 활용한 스프링부트 앱 배포 젠킨스란? 젠킨스란 소프트웨어 개발 시 지속적 통합 (Continuous Integration) 서비스를 제공하는 툴이다. 젠킨스의 공식 홈페이지를 가보자. 메인화면에 젠킨스의 장점들을.. pjh3749.tistory.com 이제는 여러 서버별로 배포를 할 때 각자 다른 설정으로 배포를 해보려고 한다. 예를들..

카테고리 없음 2019.09.12

[Spring] Jenkins(젠킨스)를 활용한 스프링부트 앱 간단 배포하기

젠킨스를 활용한 스프링부트 앱 배포 젠킨스란? 젠킨스란 소프트웨어 개발 시 지속적 통합 (Continuous Integration) 서비스를 제공하는 툴이다. 젠킨스의 공식 홈페이지를 가보자. 메인화면에 젠킨스의 장점들을 설명하고 있다. 다음은 메인 화면의 장점 내용들을 간단히 번역한 내용이다. 지속적 통합과 전달 확장가능한 자동화 서버에서 젠킨스는 간단한 CI 서버 혹은 지속적 전달을 하는데 쓰인다. 여기서 말하는 지속적 전달이란 프로덕션에 릴리즈하기 위한 코드 변경이 자동으로 준비되는 개발론을 말한다. 현대 애플리케이션의 기반인 지속적 전달은 빌드 단계 이후 모든 코드 변경을 테스트 환경 및 프로덕션 환경에 배포함으로써 지속적 통합을 확장한다. 참고) https://aws.amazon.com/ko/d..

프로그래밍/Spring 2019.08.24 (11)

[Spring] RESTful의 HATEOAS 관련 내용 정리 - RESTful 하려면 어떤 조건들이 필요할까?

Hypermedia As The Engine Of Application state 링크에 사용 가능한 URL을 리소스로 전달하여 client가 참고하여 사용할 수 있도록 하는 것 참조문서:https://spring.io/guides/gs/rest-hateoas/ Resource Representation class 만들기 서비스 상호작용을 생각하면서 진행 해보자. 서비스는 GET 요청을 핸들하기 위해 리소스를 /greeting에 노출시킨다. (선택적으로 name 파라미터로 쿼리 스트링을 준다) GET 요청은 200 OK로 "greeting"을 JSON 으로 바디에 내려준다. 그 밖에, 리소스의 상태를 나타내는 JSON은 _links 속성안에 하이퍼미디어 요소들의 리스트가 매우 많다. 가장 기본적인 형태는..

[Spring] Spring Boot 로깅 (Logging) 공식 문서 내용 정리

스프링 Log reference 스프링 부트 공식 문서의 Log 부분을 번역하며 정리해보았다. 26.Logging 스프링 부트는 모든 내부로깅을 Commons Logging을 사용하지만 근본적인 로깅 구현은 남겨두었다. Java Util Logging, Log4J2, Logback은 디폴트 설정들을 제공한다. 각각의 경우 로거는 선택적 파일출력과 함께 콘솔 출력을 사용하도록 사전에 구성이 된다. 디폴트로, Starter를 사용을 한다면 Logback이 기본으로 사용된다. Java Util Logging, Commons Logging, Log4J, Slf4J를 모두 사용하는 의존적 라이브러리가 올바르게 작동하도록 적절한 Logback 라우팅이 포함된다. 자바를 사용하는데 많은 로깅 프레임워크들이 있다. 위..

[Spring] Bcrypt를 이용하여 비밀번호를 암호화하여 저장하는 방법 - 실제 프로젝트 적용기

암호화를 이용하여 원문을 해시화하는 간단한 방법을 찾던 중 Devglan 사이트에서 괜찮은 칼럼을 찾았다. https://www.devglan.com/spring-mvc/storing-hashed-password-database-java 다음 내용은 위 칼럼을 번역한 내용이다. 단순 텍스트에 비밀번호를 저장하는 것은 보안상 매우 취약하다. 이 글에서는 자바를 이용하여 데이터베이스에 해시된 패스워드를 저장하는 방법을 다룬다. 이렇게 한다면 BDA들 조차도 실제 패스워드를 빼내기 불가능하다. 기존의 MD5, SHA-1, SHA-2로 패스워드를 해싱할 수도 있지만 솔트를 치는것은 추가적인 보안을 만들 수 있다. (여기서 솔트를 친다는 말은 원문에 추가적인 문자열을 넣어서 해시를 강화한다고 이해하면 된다) 이 ..

[Spring] Spring Interceptor (인터셉터)와 WebTestClient Session (세션) 테스트 적용기

Spring의 인터셉터 사용과 그것을 테스트하는 WebTestClient에 대해서 다뤄보려고 한다. 특히나 로그인 같은 기능을 구현하는 경우 서버측에서 세션을 생성하게 되는데 그것을 어떻게 하면 간단히 테스트할 수 있는지 알아보자. 먼저 인터셉터가 어떻게 작동하는지 그림을 보자. 인터셉터는 요청을 가로채는 역할을 한다. DispatcherServlet 이전에 가로챌것 처럼 보였지만 사실은 그 이후에 요청을 가로챈다. DispatcherServlet 이전의 요청을 거치는 것은 Filter의 역할로 볼 수 있다. 그리고 중요한 점은 인터셉터는 핸들러 이전을 가로채지만 그 이후도 처리할 수 있다는 점이다. (그림을 보면 핸들러 작업 이후 다시 인터셉터로 들어가는 모습을 볼 수 있다. 잠시 후 코드로 내용을 확..

프로그래밍/Spring 2019.07.18 (3)

[Nexters]넥스터즈 (URL 단축팀) 활동 - 서버간 통신 gRPC 적용기

gRPC 적용 내용의존성 추가먼저 의존성 추가를 하는데 이렇게 3가지가 들어간다. io.grpc grpc-netty-shaded 1.18.0 io.grpc grpc-protobuf 1.18.0 io.grpc grpc-stub 1.18.0 그리고 컴파일러또한 의존성에 추가해준다. 출처 : grpc 공식 repo 그러면 proto 파일들의 기본 경로가 java폴더와 같은 level에 잡히게 된다. proto 파일의 정의그리고 이 폴더안에 .proto라는 파일을 만들어주게 되는데 자세한 내용은 이 쪽을 참고하였다. 출처 : protobuf from google 이 프로토버프 파일은 언어의 제약이 없다. (거의) 즉 이것의 최고의 장점은 범용성이다. 자바로 짜여진 grpc 서버와 파이썬인 클라이언트와 통신을 할..

[Spring] 스프링 JPA 흐름, JPA 관련 질문 내용 정리

JPA의 매핑 관계를 설정할 때 조금 복잡한 상황을 보자. 12345@ManyToMany @JoinTable(name = "recipe_category", joinColumns = @JoinColumn(name = "recipe_id"), inverseJoinColumns = @JoinColumn(name = "category_id")) private Set categories = new HashSet();cs 다 대 다 관계에서 @ManyToMany를 썼다. John Tompson께서 이런 상황은 많이 발생하지 않는다고는 한다. 지금 보면 Recipe와 Category 두 테이블이 다 대 다 관계로 묶여있다. 그래서 처음에 @JoinTable에서 이름을 "recipe_category"로 정해주었다. 이..

[Spring] 스프링 Properties 관리하기

* 스프링 Properties 정의하기 스프링 resource폴더 안에 datasource.properties를 정의해주고 그 안에 값들을 정의해 준다. 이 값들은 java config인 annotation으로 가져올 수 있다. 1234567891011121314151617181920212223242526272829@Configuration@PropertySource("classpath:datasource.properties")public class PropertyConfig { @Value("${jay.username}") String user; @Value("${jay.password}") String password; @Value("${jay.dburl}") String url; @Bean publ..