스프링 AOP 자동 프록시 생성 중복 문제의 접근 방법 반복적인 프록시의 메소드 구현을 코드 자동생성 기법을 이용해 해결했다면 반복적인 ProxyFactoryBean 설정 문제는 설정 자동등록 기법으로 해결할 수 없을까? 또는 실제 빈 오브젝트가 되는 것은 ProxyFactoryBean을 통해 생성되는 프록시 그 자체이므로 프록시가 자동으로 빈으로 생성되게 할 수는 없을까? 하지만 한 번에 여러 개의 빈에 프록시를 적용할 만한 방법은 없었다. 빈 후처리기를 이용한 자동 프록시 생성기 스프링은 OCP의 가장 중요한 요소인 유연한 확장이라는 개념을 스프링 컨테이너 자신에게도 다양한 방법으로 적용하고 있다. 그래서 스프링은 컨테이너로서 제공하는 기능 중에서 변하지 않는 핵심적인 부분외에는 대부분 확장할 수 있..
6. AOP AOP는 IoC/DI, 서비스 추상화와 더불어 스프링의 3대 기반기술의 하나다. AOP를 바르게 이용하려면 OOP를 대체하려고 하는 것처럼 보이는 AOP라는 이름 뒤에 감춰진, 그 필연적인 등장배경과 스프링이 그것을 도입한 이유, 그 적용을 통해 얻을 수 있는 장점이 무엇인지에 대한 충분한 이해가 필요하다. 스프링에 적용된 가장 인기 있는 AOP의 적용 대상은 바로 선언적 트랜잭션 기능이다. 서비스 추상화를 통해 많은 근본적인 문제를 해결했던 트랜잭션 경계설정 기능을 AOP를 이용해 더욱 세련되고 깔끔한 방식으로 바꿔보자. 트랜잭션 코드의 분리 메소드 분리 public void upgradeLevels() throws Exception { TransactionStatus status = th..
예외 자바 개발자가 가장 신경 쓰기 귀찮아 하는 것 중의 하나가 바로 예외처리다. 사라진 SQLException 초난감 예외처리 개발자들의 코드에서 종종 발견되는 초난감 예외처리의 대표선수들을 살펴보자. 예외 블랙홀 try{ ... } catch(SQLException e){ } 예외가 발생하면 그것을 catch 블록을 써서 잡아내는 것까지는 좋은데 아무것도 하지 않고 별문제 없는 것처럼 넘어가 버리는 건 정말 위험한 일이다. 원치 않는 예외가 발생하는 것보다도 훨씬 더 나쁜 일이다. 왜냐하면 프로그램 실행 중에 어디선가 오류가 있어서 예외가 발생했는데 그것을 무시하고 계속 진행해버리기 때문이다. 단순히 예외를 출력하는 경우도 마찬가지이다. } catch(SQLException e) { System.ou..
템플릿 템플릿이란 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭게 변경되는 성질을 가진 부분으로 부터 독립시켜 효과적으로 활용할 수 있도록 하는 방법을 말한다. 예외처리 기능을 갖춘 DAO DB Connection이라는 제한적인 리소스를 공유해 사용하는 서버에서 동작하는 JDBC 코드에는 반드시 지켜야 할 원칙이 있다. 바로 예외 처리다. 정상적인 JDBC 코드의 흐름을 따르지 않고 중간에 어떤 이유로든 예외가 발생했을 경우에도 사용한 리소스를 반드시 반환하도록 만들어야 하기 때문이다. 리소스 반환과 close() JDBC의 Connection이나 PreparedStatement에는 close() 메소드가 있다. 단순하게 생각하면 단들어진 걸 종료하는 것이라고 볼 수도 ..
테스트 스프링이 개발자에게 제공하는 가장 중요한 가치는 객체지향과 테스트이다. 이 장에서 설명할 테스트 기술은 만들어진 코드를 확신할 수 있게 해주고, 변화에 유연하게 대처할 수 있는 자신감을 준다. 또한, 테스트는 스프링이나 처음 사용하는 기술을 학습하는 데 있어 가장 효과적인 방법의 하나이다. 테스트의 유용성 테스트는 내가 예상하고 의도했던 대로 코드가 정확히 동작하는지를 확인해서, 만든 코드를 확신할 수 있게 해주는 작업이다. 웹을 통한 테스트 방법의 문제점 웹을 통한 테스트는 많은 문제가 있다. 하나의 테스트를 수행 하는데 참여하는 클래스와 코드가 너무 많은 것이다. Dao를 테스트하는데 서비스 클래스, 컨트롤러, 뷰 등 모든 레이어의 기능을 다 만들고 나서야 테스트가 가능하다. 이런 방식은 번거..
오브젝트와 의존관계 스프링의 핵심 철학은 객체지향 기술의 진정한 가치를 회복시키고, 그로부터 객체지향 프로그래밍이 제공하는 폭넓은 혜택을 누릴 수 있도록 기본으로 돌아가자는 것이다. 그래서 가장 관심을 많이 두는 대상은 오브젝트이다. 자바빈(JavaBean) 자바빈은 다음 두 가지 관례를 따라 만들어진 오브젝트를 가리킨다. 디폴트 생성자 : 자바빈은 파라미터가 없는 생성자를 갖고 있어야 한다. 툴이나 프레임워크에서 리플렉션을 이용해 오브젝트를 생성하기 때문이다. 프로퍼티 : 자바빈이 노출하는 이름을 가진 속성을 프로퍼티라고 한다. 프로퍼티는 set으로 시작하는 수정자 메소드(setter)와 get으로 시작하는 접근자 메소드(getter)를 이용해 수정 또는 조회할 수 있다. 리팩토링 기존의 코드를 외부의..
- Total
- Today
- Yesterday
- 빈팩토리
- 템플릿
- IoC
- shellscript
- AOP
- 애플리케이션컨텍스트
- jar 실행
- JsonProperty
- apache
- java
- springboot
- 쉘스크립트
- EmbededTomcat
- 413
- Tomcat
- 빌드도구
- 스프링프레임워크
- lombok
- 연동
- 스프링
- StringBuilder
- JsonIgnore
- gradle
- mod_jk
- Spring
- DI
- final
- 자바
- 토비의스프링
- stringbuffer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |