3.4.1 JdbcContext 의 분리

전략 패턴 구조에서 분리

컨텍스트 메서드는 UserDao 내의 PreparedStatement 를 실행하는 기능을 가진 메서드에서 공유 가능

JdbcContextWithStatementStrategy()

클래스 분리

  1. JdbcContext

    public class JdbcContext {
      private DataSource dataSource;
    
      public void setDataSource(DataSource dataSource){
        this.dataSource = dataSource;
      }
      public void workWithStatementStrategy(StatementStrategy stmt) throws SQLException{
      ...
      }
    }
    
  2. UserDao

public class UserDao {

  @Autowired
  private DataSource dataSource;

  private JdbcContext jdbcContext;

  public void setDataSource(DataSource dataSource) {
    this.dataSource = dataSource;
  }

  public void setJdbcContext(JdbcContext jdbcContext){
    this.jdbcContext = jdbcContext;
  }

빈 의존관계 변경

JdbcContext