저는 사실 오늘 토비님 발표를 두번봤습니다. 실제 발표 시간 때 한번봤고, 발표하기 전에 리허설 때 한번 먼저 봤습니다. 리허설을 보기 전에는 발표 자료를 또 먼저 봤었구요. 발표자료만 봤을 때는 꽤나 어렵게 느껴졌는데, 리허설 때 라이브 코딩을 보니까 이해하기가 더 수월했습니다. 그리고 실제 발표 시간에는 직접 토비님 코딩에 맞춰서 저도 똑같이 따라서 코딩했습니다.

어쩄든 보면서 코딩했던걸 되새기며, 까먹기 전에 후딱 기록합니다.

먼저, 별로 권장할만한 방법은 아니지만, 가장 단순한 방법은 @Configuration 클래스를 상속받는 방법입니다. 상속 받아서 오버라이딩을 하거나, 새로운 @Bean을 추가할 수 있겠습니다.

[gist id=1633111 file=Hello.java]

이런 클래스가 있고, 이걸 자바 설정으로 다음과 같은 빈 설정 파일을 만들었다고 가정하겠습니다.

[gist id=1633111 file=HelloConfig.java]

이 빈 설정에 등록한 Hello @Bean을 다른 빈 설정에서도 재사용 및 확장하고 싶다면, 다음과 같이 단순하게 상속해서 오버라이딩 할 수 있습니다.

[gist id=1633111 file=AppConfig.java]

하지만, 다음과 같은 문제가 있죠.

  • 클래스 이름 외워야 한다.
  • 자바는 단일 상속이기 때문에 다른 설정은 확장하지 못한다.
  • 자바의 상속이 가진 모든 단점도 지니게 된다.
  • @Configuration의 @Bean은 CGLib 프록시를 사용하기 때문에 @Bean 메서드에 final을 사용해서 중요 로직이 오버라이딩되지 않도록 방지할 수가 없어서, 자칫 오버라이딩으로 인해 중요 로직까지 바뀔 수 있다.

그래서 이 방법은 가장 단순한 방법이긴 하지만, 별로 권장할만한 방법은 아닙니다. 그렇다고 쓰지 말라는 법은 없으니깐 뭐.. 흠냐..