Spring
-
[토비의 스프링 3.1 Vol.1] 6장 AOPJava/Spring Framework 2018. 2. 20. 23:31
[사족] 토비의 스프링을 접한 이후로 7년만에 처음 펴보는 장이 아닌가 싶다. 생각보다 분량도 많고(약 150페이지) 쉬운 내용이 아니라 읽는데 오래 걸렸다. DI/IoC, 서비스 추상화와 더불어 스프링의 3대 핵심으로 불리우는 AOP이다. Transactional을 대충 갖다 쓰는것과 원리와 처리 과정 등을 명확히 아는 것에는 정말 차이가 있다고 느껴졌다. [내용] 6장의 목차6.1 트랜잭션 코드의 분리6.2 고립된 단위 테스트6.3 다이내믹 프록시와 팩토리 빈6.4 스프링의 프록시 팩토리 빈6.5 스프링 AOP6.6 트랜잭션 속성6.7 애노테이션 트랜잭션 속성과 포인트컷6.8 트랜잭션 지원 테스트6.9 정리 5장까지 서비스 추상화 기법을 도입해서 데이터 엑세스 기술에 독립적으로 깔끔하게 코드를 개선시..
-
[토비의 스프링 3.1 Vol.1] 5장 서비스 추상화Java/Spring Framework 2018. 1. 16. 22:37
[사족] 드디어 한 번만 본 챕터가 나왔다. 6장의 AOP는 본 기억이 없으니 아마 5장 중간즈음 보다가 완독을 못했을 것 같다. 이 기세로 쭉쭉 읽어 나가자. 5장은 내용이 더 재밌어진다. 이때까지 만든 사용자 관리시스템(?)에 기능을 더 추가한다. 활동별 사용자 등급 변경기능과 등급 변경시 메일 안내 발송 기능이다. 해당 기능들을 개발하면서 발생하는 문제점들을 풀어나간다. 어떻게? 당연히 스프링 DI를 활용해서. 그리고 토비 선생님은 정말 테스트를 중요하게 생각 한다는 것을 또 한번 느꼈다. [내용] 5장의 목차5.1 사용자 레벨 관리 기능 추가5.2 트랜잭션 서비스 추상화5.3 서비스 추상화와 단일 책임 원칙5.4 메일 서비스 추상화5.5 정리 사용자 관리시스템에 레벨 기능을 추가한다. 간단히 fi..
-
[토비의 스프링 3.1 Vol.1] 4장 예외Java/Spring Framework 2018. 1. 14. 01:08
[사족] 4장도 3번째 정도 보는 것 같다. 예외는 토비님의 말대로 많은 개발자들이 제법 귀찮아 하는 부분이다. 당장 돌아가는 기능이랑은 별로 상관 없다고 생각되기 쉽기 때문이다. 하지만 그 중요성은 누구나 다 알것이다. 99% 잘 돌아가다가도 1%의 예외 가능성 때문에 시스템이 장애가 나고 다운이 된다면 그건 불완전한 소프트웨어가 되버린다. 그만큼 디테일, 장인정신, 꼼꼼함이 필요한 것이 예외처리다. 자바8이나 스칼라 같은데는 null처리 같은 예외상황에 안전하게 대처하기 위해 Option이 있다. 스펙에 포함될 정도로 예외처리와 관련된 것은 중요하고 꼭 필요한 것이다. 4장까지 봤을때 스프링을 사용하는 가장 큰 이유는 "유연한 시스템 개발"인 것 같다. 인터페이스를 활용하여 느슨한 결합을 유지하고, ..
-
[토비의 스프링 3.1 Vol.1] 3장 템플릿Java/Spring Framework 2018. 1. 4. 22:45
[사족] 3장은 이제 한 3번째 보는 것 같다. 역시나 새로운 것은 마찬가지다. 예전에 실습 했던게 조금 기억은 나긴하지만. p.241에 콜백을 설명하면서 "자바에선 메소드 자체를 파라미터로 전달할 방법은 없기 때문에 메소드가 담긴 오브젝트를 전달해야 한다. 그래서 펑셔널 오브젝트(functional object)라고도 한다."라고 나온다. 이제는 람다가 가능하여 메소드 조각도 파라미터로 전달 가능한 시대가 왔다. 토비의 스프링3가 2010년, 지금 내 책의 초판 인쇄가 2012년인걸 보니 격세지감이 느껴졌다. 그런데 나는 왜 아직도 완독을 못한걸까? [내용] 3장의 목차3.1 다시 보는 초난감 DAO3.2 변하는 것과 변하지 않는 것3.3 JDBC 전략 패턴의 최적화3.4 컨텍스트와 DI3.5 템플릿과..
-
[토비의 스프링 3.1 Vol.1] 2장 테스트Java/Spring Framework 2017. 12. 25. 22:09
[사족] 이제는 Java에서는 어지간하면 JUnit을 이용해서 메소드들을 테스트한다. 쉽고 빠르게 여러번 테스트 하기 쉽기 때문이다. 테스트를 작성하는 과정이 까다롭거나 귀찮을 수 있으나 단점보다 장점이 훨씬 많다고 생각된다. 스프링을 사용하지 않더라도 JUnit을 활용하면 테스트 하기 쉽다. 2장에서는 Java의 기본적인 테스트부터 스프링의 테스트, 나아가 학습테스트까지 소개하고 있다. [내용] 2장의 목차이다. 2.1 UserDaoTest 다시 보기 2.2 UserDaoTest 개선 2.3 개발자를 위한 테스팅 프레임워크 JUnit 2.4 스프링 테스트 적용 2.5 학습 테스트로 배우는 스프링 2.6 정리 1장에서 만든 main메소드를 이용한 테스트를 JUnit을 활용한 테스트로 변모시켜 나간다. 만..
-
[토비의 스프링 3.1 Vol.1] 1장 오브젝트와 의존관계Java/Spring Framework 2017. 12. 24. 22:44
[사족] 1장만 8번 정도 본것 같다(2011년 정말 글자만 읽은 시절 포함). 이제야 한 90% 이해하는 것 같다. 그만큼 깊고 중요하고 필요한 내용들을 담고 있는 책인것 같다. 하지만 아직 완독한 적이 없다... 토비의 스프링3.1을 완독하기 위해 한 장을 읽을 때 마다 짧게라도 정리하고 느낀점들을 남길까 한다. [내용] 1장의 큰 목차는 다음과 같다. 1.1 초난감 DAO 1.2 DAO의 분리 1.3 DAO의 확장 1.4 제어의 역전(IoC) 1.5 스프링의 IoC 1.6 싱글톤 레지스트리와 오브젝트 스코프 1.7 의존관계 주입(DI) 1.8 XML을 이용한 설정 1.9 정리 아주 기본적이고 기초적인 DAO 코드를 가지고 조금씩 리팩토링 하면서 객체지향적이고 스프링다운 코드로 변모하는 과정을 보여준..
-
스프링 부트 코딩 공작소후기/Book Review 2017. 7. 7. 00:25
사내에서 신규 프로젝트 작은거를 하나 하게 되었는데, 기회다 싶어서 스프링 부트로 하기로 결정했고 참고서적으로 구입한 책. 출판 당시(한국어 번역판이 나올 때) 토비님을 비롯 여러 전문가들이 칭찬을 하던 책이라 믿고 볼 수 있었다. 스프링도 써봤고 스프링 부트도 공부는 해보았으나 부트를 실제로 사용한 적은 없었기 때문에 조금 두려움은 있었다. 또한 메이븐 기반의 프로젝트는 해봤어도 그레이들은 써보지 않았다. 그렇지만 책이 그레이들 기반으로 프로젝트를 구성해서 이 기회에 그레이들을 사용해 보았다(메이븐 설명도 나오긴 하지만 주는 그레이들이다). 그레이들로 프로젝트를 만들고 시작하는 것부터 해서 application.yml 설정하는 것들, 엑추에이터 기능(health정도만 사용하지만)들은 바로 찾아서 사용할..
-
[Spring Boot] 가장 쉽게 시작하기 2Java/Spring Framework 2017. 6. 16. 23:13
1편에서 내장톰캣으로 스프링부트 어플리케이션을 구동시키는 것까지 해보았다. 오늘은 간단한 RESTful API 서버를 만들어 보도록 하겠다. HomeController.java @RestController : @Controller + @ResponseBody 의 축약형으로써, 리턴값을 뷰리졸버로 매핑하지 않고 그대로 출력해준다.@GetMapping : @RequestMapping(method = RequestMethod.GET) 의 축약형으로써, 애너테이션만 보고 무슨 메소드 요청인지 바로 알아볼 수 있다. User.java User에 포함시킬 프로퍼티들을 정의하고 Getter와 Setter를 정의해준다. 할 것들은 벌써 다 끝났다. DemoApplication을 Run해보면 다음과 같은 결과화면을 볼 ..