스프링
-
[우아한테크세미나] 우아한 스프링 배치 후기프로그래밍/오늘 공부 2019. 9. 26. 23:30
우아한 스프링 배치 지난달에 이어서 운 좋게9월 우아한 테크 세미나에도 당첨되어 세미나에 다녀왔습니다. 취업준비를 할 때 가장 많은 도움을 받은 블로그 이기도 하고, 현재 제가 다니는 회사에 예전에 다니셨다고 하셔서 더 많은 관심이 가는 이동욱님께서 스프링 배치와 관련된 전반적인 개념과 오해들, 또 실무에서의 팁들을 발표해주셨습니다. 아래 내용은 발표를 들으며 정리한 내용입니다. 기본 편 - 기본 개념 & 오해 풀기 배치 애플리케이션? 컴퓨터에서 사람과 상호 작용 없이 이어지는 프로그램 혹은 작업 웹 애플리케이션과는 지향점이 다르다. Web -> 실시간 처리 / 상대적인 속도 / QA가 용이 Batch -> 후속 처리 / 절대적인 속도 / QA 복잡 ( 오히려 테스트 코드의 중요성이 더 높음 ) Spri..
-
Travis CI를 이용해 Maven + SpringBoot에 CI 적용하기프로그래밍/서버 프로그래밍 2019. 2. 20. 21:20
Travis CI를 이용해 Maven + SpringBoot에 CI 적용하기 CI CI란 Continuous Integration의 약자로, 각각의 개발자의 개발소스를 한번에 통합 빌드하는 과정을 지속적으로 함으로써 따로 어느시점에 코드를 모아서 통합빌드할 필요가 없도록 하는 기법을 말합니다. 이를 활용하면 배포를 위한 빌드와 테스트 단계의 소요시간을 줄일 수 있다고 합니다. CI Server 빌드 프로세스를 관리해주는 서버로 대표적으로 젠킨스, Travis CI, Circle CI가 있습니다. 오늘 저는 Travis CI를 이용해 제 SpringBoot 프로젝트에 CI를 적용해보겠습니다. Travis에 프로젝트를 연동완료하면, master브랜치에 소스코드가 올라갈때마다 자동으로 통합빌드 및 테스트를 진..
-
@Valid 에서 받은 Errors를 Serialize해서 ResponseEntity에 담자!프로그래밍/서버 프로그래밍 2019. 2. 19. 15:30
@Valid 에서 받은 Errors를 Serialize해서 ResponseEntity에 담자! 지난번 Valid로 RequestBody값 검증하기글에서 보면 제가 Errors를 바로 ResponseEntity.badRequest().body(errors) 이런식으로 에러를 직접 바디에 담아서 리턴해주는 코드를 짰습니다. 아마 실행해보신 분들은 이런 에러가 떴을거에요! org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [..
-
스프링 시큐리티 요청 URI별 권한 처리할 때 문제상황 해결!프로그래밍/서버 프로그래밍 2019. 2. 19. 15:17
스프링 시큐리티 요청 URI별 권한 처리할 때 문제상황 해결! 스프링 시큐리티를 사용하는 프로젝트에서 /api/**는 authenticated()로 처리하고, /api/accounts로 들어오는 POST요청만 permitAll() 처리를 해줬는데 이게 실제 테스트코드에서 계속해서 실패하는 이슈가 있었다. 해당 코드는 @Override public void configure(HttpSecurity http) throws Exception { http.anonymous() .and() .authorizeRequests() .mvcMatchers("/api/**").authenticated() .mvcMatchers(HttpMethod.POST, "/api/accounts") .permitAll() .and(..
-
Spring boot 스프링 부트에서 request Validation 요청값 검증하기프로그래밍/서버 프로그래밍 2019. 2. 18. 14:22
Spring boot 스프링 부트에서 request Validation 요청값 검증하기 @Valid이용 안녕하세요. 오늘은 Spring boot 에서 request에 들어오는 요청값을 검증하는 법을 알아보겠습니다. 현재 제가 공부로 진행중인 프로젝트에서 소스를 조금 가져오겠습니다. 먼저 AccountController에 있는 createAccount메소드를 가져오겠습니다. @PostMapping public ResponseEntity createAccount(@RequestBody @Valid AccountDto dto, Errors errors) { if (errors.hasErrors()) { return ResponseEntity.badRequest().build(); } Account accoun..
-
2019.01.08 공부한 것프로그래밍/오늘 공부 2019. 1. 8. 17:28
Spring Boot 서버 AWS에 올리고 자동 배포까지 오늘은 하루종일 AWS와 씨름했다. Spring Boot로 만든 애플리케이션을 AWS EC2에 올려서 자동으로 배포되도록 하는 것을 항상 해보고 싶었는데, 배포를 하기도 전에 프로젝트를 끝마치지 못하고 다른 새로운 프로젝트를 하는 경우가 많아서 항상 미루고 있었다. 그래서 이번에는 자동배포를 모두 세팅해놓고, 그 다음에 프로젝트를 진행해야겠다는 생각을 했다. 그래서 오늘 인터넷의 듀토리얼들을 보고 결국 자동배포에 성공했다. 자동 배포를 하는 프로세스는 이랬다. GitHub의 master 브런치에 내가 배포하고 싶은 코드를 merge하거나 commit 후 push한다. Travis에서 이를 자동으로 Build하여 AWS의 S3로 보내준다. AWS의 ..
-
Spring 스프링 MyBatis 와 JPA-Hibernate프로그래밍/서버 프로그래밍 2018. 12. 18. 16:32
현재 인턴을 진행하고 있는 곳에서 스프링과 MyBatis를 처음으로 경험해보았습니다. 이전까지는 학교 수업중에 실습으로 JDBC를 사용하여 데이터베이스를 CREATE, READ, UPDATE, DELETE 해본게 전부 였지만 확실히 MyBatis 를 이용한 데이터의 접근 및 초기 설정이 더 편리하다는 느낌을 받았습니다. 이후 혼자 공부를 해오던 와중에 Spring JPA 혹은 Hibernate라고 불리우는 기술이 많이 쓰이고 있고 개발 속도도 더 빠르다는 점이 흥미로워 공부 겸 글을 작성해보려 합니다. MyBatis MyBatis를 처음 공부할 당시에는 iBatis라는 단어가 구글 검색 결과에 항상 같이 나와서 의아했습니다. 알고보니 iBatis 는 MyBatis 가 Google Code로 이전하기 이전..