북리뷰/토비의 봄(13)
-
Spring Web MVC web.xml 분석
web.xml이란? web.xml은 DD(Deploymeet Descriptor, 배포 설명자)이며, Web Application의 설정 파일이다. 즉, 웹 어플리케이션을 실행시킬 때 함께 올라가야할 설정을 정의해놓은 것이다. web.xml 구성 web.xml은 크게 DispatcherServlet, ContextLoaderListener, Filter로 나뉜다. DispatcherServlet HTTP 프로토콜로 매핑되는 요청을 받아 적합한 컨트롤러에게 위임해주는 역할을 한다. 어플리케이션으로 들어오는 모든 요청을 핸들링하고 공통 작업을 처리한다. 클라이언트 요청을 다음과 같은 순서로 처리한다. 1. 클라이언트 요청을 처리해줄 컨트롤러 탐색 (HandlerMapping 객체가 처리) 2. 컨트롤러 실행..
2022.01.30 -
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