전체 글(82)
-
[토비의 스프링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 -
spring 오류 [java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/TransactionAwareDataSourceProxy]
나는 토비의 스프링을 보면서 sts로 spring starter project?로 프로젝트를 시작했는데 그거 때문인지 몰라도 토비의 스프링에서는 poom의존성을 건드리는 부분이 없었는데 자꾸 이상하게 junit에서 에러가 나는것이었다... 그래서 검색하다보니 나온게 poom에 org.springframework spring-jdbc 를 추가해주면 된다. jdbc를 poom에 추가해주지 않아서 계속적으로 에러가 나는것이었다. 한시간동안 헤매서 알아냈다....
2022.04.26