데이터 엑세스 층의 주요역할은 데이터 액세스 처리를 비즈니스 로직층에서 분리하는 것이다. 비즈니스의 핵심 로직과 데이터에 액세스하는 로직이 함께 작성되어 있으면 나중에 유지보수하거나 수정할때 더 힘들어진다. 그래서 DAO 패턴을 사용한다. DAO 패턴은 데이터의 접근과 변경, 취득 등 데이터 액세스 처리를 DAO라고 하는 오브젝트로 분리해서 처리하는 패턴이다. 이렇게 하면 데이터 엑세스와 관련된 로직을 비즈니스 로직과 분리 할 수 있고, 데이터 액세스 방식이 변경되어도 비즈니스 로직에 영향을 주지 않는다. 자바의 데이터 엑세스 기술 자바가 데이터 엑세스 처리를 구현할때 사용하는 기술에는 여러가지가 존재한다. 예를들어 JDBC, 하이버 네이트, MyBatis, JPA등 다양한 데이터 엑세스 기술이 존재한다..
스프링 AOP란 업무의 본질적인 로직 부분만 해당 클래스안에 적고, 나머지 본질적이지 않은 처리는 외부로 꺼내어 정리하는 기술이다. 예를 들면, 로그처리나 예외 처리등 공통으로 할 수 있는 처리를 Aspect라는 하나의 단위로 모아서 어떤 오브젝트가 원래 해야 할 일만 할 수 있게 하는 기술이다. aop 용어 애스펙트 횡단 관심사의 동작과 그 횡단 관심사를 적용하는 소스 코드상의 포인트를 모은것.(동작과 동작을 적용하는 조건) 조인포인트 어드바이스가 실행하는 동작을 끼워넣을 수 있을때를 말한다. 어드바이스 조인 포인트에 실행되는 코드.(출력로그, 트랜잭션 로직 등) 포인트컷 포인트컷은 조인포인트와 어드바이스의 중간에 있으면서 처리가 조인 포인트에 이르렀을 때 어드바이스를 호출할지 선별한다.(조건) 어드바..
DI 컨테이너의 핵심 DI 컨테이너의 핵심은 BeanFactory 이다. BeanFactory는 실행시 건네지는 Bean 정의 파일(applicationContext.xml)을 바탕으로 인스턴스를 생성하고 인스턴스의 인젝션을 처리한다. DI컨테이너로 부터 인스턴스를 얻는다는 말은 BeanFactory로부터 인스턴스를 얻는다는 것이다. Bean 정의 파일은 xml 파일에 기술하는 것이 일반적이다. 이전포스팅에서 @Autowired , @Component의 두 어노테이션으로 구현한것을 파일로 바꿔쓴다면, ProductServiceImpl 클래스와 ProductDaoImpl 클래스에서 어노테이션이 사라지고 ProductServiceImpl클래스에만 인젝션을 위한 setter 메소드가 필요해진다. 아래 예제에서..
스프링 DI는 인터페이스를 이용해서 컴포넌트화를 실현하는 것이다. 쉽게말하면 의존관계를 주입한다고도 한다. 이 말은 어떤 오브젝트의 프로퍼티(인스턴스 변수)에 그 오브젝트가 이용할 오브젝트를 셋팅(주입)한다는 의미다. 다시말하면 어떤 오브젝트가 의존(이용)할 오브젝트를 주입, 인젝션 한다는 뜻이다. 빈의 생명주기 BeanFactory 상속관계 예제 프로젝트 구조 어노테이션을 이용한 스프링 DI 예제 ProductSampleRun.java @Autowire를 붙이면 DI 컨테이너가 그 인스턴스 변수의 형에 대입할 수 있는 클래스를, @Componet 가 붙은 클래스중에서 찾아서 @Autowire가 붙은 변수에 인젝션 해준다.(Bean정의에서 스탠할 범위지정필요) @Componet가 붙은 클래스가 여러개 있..