Spring3 TestContainers를 Spring Bean으로 등록해보자 TestContainers 소개와 이어지는 글입니다. 기본 사용법과 단점 인터넷에 올라온 예제에서는 대부분 상속 형태로 TestContainers를 사용한다. @Testcontainers abstract class SampleContainersTest { @Container static GenericContainer postgresSQLContainer = new GenericContainer("postgres"); } public class Sample extends SampleContainersTest { @Test void test() { System.out.println("hello world!"); } } 이 방식의 단점은 여러 클래스에서 상속받은 경우, 각각의 클래스마다 docker run이 .. 2022. 9. 18. @Cacheable은 this 호출로 동작하지 않는다. 1. 프록시 스프링의 Cache, AOP, Transaction은 Proxy를 사용합니다. 여긴 조금 더 조사가 필요하지만, 스프링에서 CGLIB 이라는, 동적으로 프록시 객체를 구성하는 라이브러리를 사용하고 있습니다. 프록시 객체는 실제 사용되는 객체를 상속받아, 원하는 작업(AOP, cache 등)을 수행하고 실제 객체를 호출하는 역할을 합니다. 프록시에 대한 예제 코드는 여기를 참고하시면 좋을 것 같습니다 2. Autowired @Autowired 어노테이션은 ApplicationContext에서 알맞은 Bean을 찾아 주입해주는 역할을 합니다. @EnableCaching 어노테이션이 사용된 경우, 의존성 주입 시에 @Cacheable이 사용된 Bean은 실제 구현체 대신 스프링에서 한번 더 감싼 .. 2021. 12. 5. 토비의 스프링을 읽고 막 적어보자 (1) 191018 어떻게 적용할 것인가를 항상 생각하며 읽을 것. 남에게 설명할 수 있기 전까지는 안다고 할 수 없다. 스프링 부트를 맛보니 스프링 실력이 모자라다고 느꼈다. 1. 개방 폐쇄 원칙. OCP Open Close Principle 클래스나 모듈은 확장에는 열려있어야 하고 수정에는 닫혀있어야 한다. 2. 단일 책임 원칙. SRP Single Responsibility Principle 하나의 클래스는 하나의 책임만 가진다. 3. 리스코프 치환 원칙 LSP Liskov Subsitution Priciple 4. ISP Interface Segregation Principle 5. DIP Dependency Inversion Principle 전략 패턴. 스프링은 객체지향적 설계 원칙과 디자인 패턴에 .. 2019. 10. 18. 이전 1 다음