분류 전체보기(126)
-
JdbcTemplate 사용 및 람다식으로 축약하기
이전 포스팅에서 템플릿과 콜백의 기본적인 원리와 동작방식, 만드는 방법에 대해 알아보았다. 스프링에도 JDBC를 이용하는 DAO에서 사용할 수 있도록 다양한 템플릿과 콜백을 제공한다. 스프링에서 제공하는 JDBC 코드용 기본 템플릿은 JdbcTemplate이다. 한번 사용해보자 public class UserDao { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } ... }update() update() 메서드는 PreparedStatementCreator타입을 콜백 받아서 사용한다. 다음과 같이 사용하..
2022.01.17 -
템플릿/콜백 패턴 예시, 익명 클래스를 람다식으로 변환
간단한 템플릿/콜백 예제를 하나 만들어보자. 파일을 하나 열어서 모든 라인의 숫자를 더한 합을 돌려주는 코드를 만들어보겠다. 우선 숫자가 담긴 numbers.txt파일을 하나 먼저 만든다. 1 2 3 4모든 라인의 숫자의 합은 10이다. numbers.txt파일의 경로를 주면 10을 돌려받는 메서드에 대한 테스트를 제작해보자 public class CalculatorTest { @Test public void sumOfNumbers() throws IOException { Calculator calculator = new Calculator(); int sum = calculator.calcSum("C:\\tobyTest\\src\\test\\java\\springbook\\callbackSample\\..
2022.01.17 -
중첩클래스와 익명 클래스로 클래스 파일 간소화
이전 포스팅에 작성한 코드들을 다시 살펴보자 public class UserDao { private DataSource dataSource; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public void add(User user) throws SQLException { StatementStrategy st = new AddStatement(user); jdbcContextWithStatementStrategy(st); } public User get(String id) throws SQLException { Connection c = null; PreparedStatement ps = null; R..
2022.01.17 -
try/catch/finally로 예외 처리 및 전략 패턴으로 중복 컨텍스트 추출
이전 포스팅에 작성한 코드를 다시 살펴보자 public class UserDao { private DataSource dataSource; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public void add(User user) throws SQLException { Connection c = dataSource.getConnection(); PreparedStatement ps = c.prepareStatement("insert into users(id, name, password) values (?,?,?)"); ps.setString(1, user.getId()); ps.setString(2,..
2022.01.16 -
JUnit @Before(@After)사용으로 테스트 코드 중복 제거 및 스프링 테스트 적용
이전 포스팅에 작성했던 테스트 코드를 살펴보자 public class UserDaoTest { @Test public void addAndGet() throws SQLException { ApplicationContext context = new AnnotationConfigApplicationContext(DaoFactory.class); UserDao dao = context.getBean("userDao", UserDao.class); dao.deleteAll(); assertThat(dao.getCount(), is(0)); User user = new User(); user.setId("dkwip"); user.setName("test"); user.setPassword("1234"); dao...
2022.01.16 -
테스트 코드 작성, JUnit 사용과 테스트 주도 개발(TDD)
import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import springbook.user.domain.User; import java.sql.SQLException; public class UserDaoTest { public static void main(String[] args) throws ClassNotFoundException, SQLException { ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); ..
2022.01.15