Skip to content

Instantly share code, notes, and snippets.

@benelog
Created November 6, 2012 20:59
Show Gist options
  • Save benelog/4027490 to your computer and use it in GitHub Desktop.
Save benelog/4027490 to your computer and use it in GitHub Desktop.
토비의 스프링 3.1 읽기 모임

1회 모임

2012년 10월 16일

이야기 거리

패턴의 유용성

  • 패턴명으로 의사소통을 하면 효율적이다.
  • 역작용도 있다.
    • 과도한 패턴이 쓰인 코드를 경험해서 패턴에 부정적인 팀과 일할때는 일부러 패턴명을 숨겼다는 이야기도 들었다.
    • hibernate visitor 패턴. Proxy가 생성되어서 instanceof가 안 먹히기 때문에 썼지만 인터페이스를 따로 정의하면 해결할 수 있을 것 같다.

Spring에 쓰인 패턴

인터페이스

  • 책에는 선언에도 손해볼 것이 없다.. 정도의 뉘앙스..
  • 인터페이스 선언이 문서화에는 확실한 장점이 있다.
  • 1 inteface - one implementation인 Business Object의 interface를 꼭 정의해야할까?
  • Mock의 발달로 interface가 없어도 테스트할 수 있는데, 그런 Mock의 발전이 설계 개선을 저해하는 것은 아닐까? (극단적으로 PowerMock)

선호하는 DI스타일

  • JavaConfig에 대한 선호도는?
  • Setter Injection vs Constructor Injection vs Field Injection

3회 모임

2012년 10월 30일

이야기 거리

Checked Exception

  • checked Exception이 프레임웍크에서 사라지는 이유는 OCP 위반이기 때문.

Exception 처리

  • Exception 전환 : 책 4-13의 cause를 넘기는 부분 중요
    • catch하면서 Exception을 새로운 Exception근본 원인을 숨겨버리는 사례가 실무에 있다..
  • EJB시대.. try catch와 향연..
  • jdk 7 catch절 편하다..

Domain object 안의 로직

  • 테스트하기 좋기 때문에 좋은 패턴이라고 생각함.
  • 전제조건은 Domain 안의 속성만으로 해결가능한 로직을 경우에만
    • 비지니스 로직이냐 vs 도메인에 내재된 특성이냐?

Hibernate 낙관적인 잠금..

버전컬럼을 이용해서 update 칠때 달라져 있으면 Exception

Enum

  • ordinal은 중간에 속성을 추가하면 기존 값이 바뀌어서 위험하다.
  • Hibernate에서 Enum값을 저장할 때 문자열을 쓸것인지 숫자를 쓸것인지 고민. 결국 문자열로.
  • Mysql의 enum속성과 맞출수도 있지만...

도구 추천

4회 모임

2012년 11월 6일

이야기 거리

Resource 선언의 default

  • 613쪽에 표7-1의 '접두어가 없는 경우에는 ResourceLoader 구현에 따라 리소스의 윛가 결정된다 ServletResourceLoader라면 서블릿 컨텍스트의 루트를 기준으로 해석한다.'
  • 615쪽의 리스트 7-58안에는 'classpath:는 디폴트이므로 생략 가능하다' 고 되어 있는데, 해당 파일 안에서 한 설명이므로 맥락에 주의할 것.

Resource.getFile()이 안 먹힌 경험 공유

  • classpath에서 읽어올 때 jar파일 안에 있을 경우
    • Jetty와 Tomcat이 다르게 먹혔는데, 핵심은 컨테이너보다는 jar파일로 묵었느냐 안 묶었느냐의 여부였음.
    • one-jar로 묶은 애플리케이션에서 인증서 파일을 File객체로 접근 못함. InputSteram으로 읽어서 다시 파일로 쓰는 회피법 사용

개발 환경의 WAS

  • 되도록 운영환경과 맞추는 것이 좋다.
  • Tomcat 대신 단독 application으로 Jetty를 선호하는 사람도 많다.
    • Maven multi project일 때 WTP의 불편함
    • WTP의 Publishing time
    • Eclipse이 Linked Resource를 활용하는 문제가 걸림.
  • WTP의 옵션으로 publishing time은 더 빠르게 할 수 있다.
    • publishing interval 조정
    • Server Options에서 Serve modules without publishing를 쓰면 나을지도.(Kenu님의 http://bit.ly/okeclipse 참조)
  • Maven jetty plugin, Maven tomcat plugin도 상황에 따라서 사용

DI를 의식한 설계

  • 정교한 설계는 쉽지 않더라도 적어도 static은 쓰지 않는 것이 좋다고 느낌.
    • 최근 static으로 된 환경설정 정보를 리팩토링하면서 어려움 겪음

Embeded DB를 테스트에 사용한 경험

SQL관리

  • Sql 정보 동적 로딩이 바람직한가?
    • 개별 쿼리를 동적 reloading하면 위험하지 않을까?
    • 실무에서는 전체 Dynamic reloading정도를 유용하다.
      • iBatis에서 파일시스템 경로로 지정할 때 리로딩이 지원된다.
  • JdbcTemplate + Groovy 활용

역할별 interface분리

  • Spring Batch 사례 : JobRepository, JobOperator, JobExplorer, JobRegistry ..
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment