Spring(23)
-
[토비의 스프링] AOP 용어
타깃 : 부가기능을 부여할 대상 ( 핵심 기능을 담은 클래스일 수도 있지만, 경우에 따라서는 다른 부가기능을 제공하는 프록시 오브젝트 일수도 있다. ) 어드바이스 : 어드바이스는 타깃에게 제공할 부가기능을 담은 모듈. 어드바이스는 오브젝트로 정의하기도 하지만 메소드 레벨에서 정의할 수도 있다. ( 종류가 많다 ) 조인 포인트 : 어드바이스가 적용될 위치. 스프링의 프록시 AOP에서 조인 포인트는 메소드의 실행단계 뿐이다. 타깃 오브젝트가 구현한 인터페이스의 모든 메소드는 조인 포인트가 된다. 포인트 컷 : 어드바이스를 적용할 조인 포인트를 선별하는 작업 또는 그 기능을 정의한 모듈. 스프링 AOP의 조인 포인트는 메소드의 실행이므로 스프링의 포인트컷은 메소드를 선정하는 기능을 갖고 있다. 그래서 포인트컷..
2022.06.02 -
[토비의 스프링1] 서비스 추상화
객체지향적인 코드는 다른 오브젝트의 데이터를 가져와서 작업하는 대신 데이터를 갖고있는 다른 오브젝트에게 작업을 해달라고 요청한다. 오브젝트에게 데이터를 요구하지 말고 작업을 요청하라는 것이 객체지향 프로그래밍의 가장 기본이 되는 원리이다. JdbcTemplate과 트랜잭션 동기화 public void upgradeLevels() throws Exception { TransactionSynchronizationManager.initSynchronization(); Connection c = DataSourceUtils.getConnection(dataSource); c.setAutoCommit(false); try { List users = userDao.getAll(); for(User user : us..
2022.05.12 -
Junit5 테스트시 객체주입 안되는 에러
package springbook.user.service; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.sprin..
2022.05.11 -
[토비의 스프링2] 1 IoC 컨테이너와 DI
1 IoC 컨테이너 : 빈 팩토리와 애플리케이션 컨텍스트 스프링 애플리케이션은 오브젝트의 생성과 관계설정, 사용, 제거 등의 작업을 애플리케이션 코드 대신 독립된 컨테이너가 담당한다. 이를 컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다. 스프링 IoC 컨테이너는 일반적으로 애플리케이션 컨텍스트를 말한다. 스프링의 빈 팩토리와 애플리케이션 컨텍스트는 각각 기능을 대표하는 BeanFactory와 ApplicationContext라는 두 개의 인터페이스로 정의 되어있다. ApplicationContext 인터페이스는 BeanFactory 인터페이스를 상속한 서브 인터페이스다. ( 컨텍스트란? ) * 실제로 IoC 컨테이너라고 말하는 것은 ApplicationContext 인..
2022.05.11 -
토비의 스프링 4장 에러
assertThat(set.translate(null, null, sqlEx), is(DuplicateKeyException.class)); 가 에러가 났다. 잘못된 값이 들어왔다는 뜻인데 The method assertThat(T, Matcher
2022.05.10 -
디자인 패턴 정리
템플릿 메서드 패턴 - 상속을 통해 기능을 확장해서 사용하는 부분이다. 변하지 않는 부분은 슈퍼클래스에 두고 변하는 부분은 추상 메소드로 정의해둬서 서브클래스에서 오버라이드하여 새롭게 정의해 쓰도록 하는것이다. 단점 : 접근 제한이 많다. 로직마다 상속을 통해 클래스를 만들어야 한다. 관계에 대한 유연성이 떨어진다. 전략 패턴 - 개방 폐쇄 원칙(OCP)를 잘 지키는 구조이면서도 템플릿 메소드 패턴보당 유연하고 확장성이 뛰어난 것이, 오브젝트를 아예 둘로 분리하고 클래스 레벨에서는 인터페이스를 통해서만 의존하도록 만드는 전략 패턴이다. OCP 관점에 보면 확장에 해당하는 변하는 부분을 별도의 클래스로 만들어 추상화된 인터페이스를 통해 위임하는 방식이다. 필요에 따라 컨텍스트는 그대로 유지하면서 전략을 바..
2022.04.27