디자인 패턴 + 패턴이 적용된 기반 클래스 라이브러리
프레임워크는 개발자가 만든 클래스를 호출해 실행의 흐름에 대한 제어를 담당한다.
개발에서 자주 쓰는 과제를 효율적인 형태로 묶은 것
공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것
클래스 사이 필요로 하는 의존 관계를 주입시켜주는 것
객체와 의존성을 관리해주는 컨테이너로 개발자가 하던 제어를 컨테이너가 해준다는 의미에서 제어 반전이 일어났기 때문에 IoC 컨테이너라고 한다.
BeanFactory
ApplicationContext
Spring Bean Configuration XML
에 어떤 클래스를 빈즈로 사용할 것인지 설정한다.getBean()
메소드를 사용하여 Spring Bean Configuration XML
파일에서 설정한 객체에 접근한다.Project - Spring - Spring Bean Configuration XML에서 생성한다.
빈을 생성하는 태그
id
빈의 이름으로 사용
class
빈으로 만들 클래스의 경로
<bean id="hello" class="myspring.di.xml.Hello">
setter를 통한 주입 방식을 사용하는 태그
<bean id="hello" class="myspring.di.xml.Hello">
<property name="kor" value="10"/>
</bean>
name
setter 메소드의 이름 사용한다. ex)setKor -> kor
value
단순 값
ref
다른 빈 주입 시 사용
생성자를 통한 주입 방식을 사용하는 태그
<bean id="hello" class="myspring.di.xml.Hello">
<constuctor-arg value="10" />
</bean>
name
생성자의 인자를 사용한다. ex) public Exam(int kor){}
index
생성자의 인자에 차례로 index를 줘서 값 지정시 사용
value
단순 값
ref
다른 빈 주입 시 사용
자주 사용하는 태그들을 간편하게 사용하기 위해 줄여 사용하는 것
테스트 결과를 확인하는 용도의 메소드
기대값과 결과값이 일치하는 지 비교하는 메소드가 대부분이다.
Assert.메소드()
방식이지만
메소드를 static import해주면 메소드()
로 접근 가능
ex) import static org.junit.Assert.assertSame;
UserController
비즈니스 로직과 최종 UI를 분리하기 위한 컨트롤러 기능 제공, 클라이언트의 요청, 응답 처리 및 상위 계층의 Exception 처리
UserService
UserServiceImpl
인터페이스 및 구현 클래스로 비즈니스 로직을 구현하고 데이터 액세스 계층에 접근한다.
UserDAO
UserDAOImplJDBC
인터페이스 및 구현 클래스로 데이터 액세스 로직 구현
커넥션 풀 기능을 지원하는 DataSource
객체를 빈으로 등록해서 사용한다.
JDBC의 기능을 활용하기 쉽게 만든 클래스로 DataSource를 인자로 받는다.
update()
insert delete update 실행 시 사용
queryForObject()
여러 칼럼 1개 Row반환
query()
여러 칼럼 여러개 Row반환
스프링에서 원하는 형태의 결과를 반환받기 위한 클래스
mapRow()
ResultSet과 int형 인자를 받는 ResultSet을 이용한다.
RDBMS의 엔티티와 비슷한 개념 실제 VO, DTO 객체로 계층 전체가 사용한다.
테스트를 수행할 메소드
테스트를 실행하지 않는 메소드
@Test
메소드 실행 전마다 실행
@Test
메소드 실행 전 한번만 실행
@Test
메소드 실행 후마다 실행
@Test
메소드 실행 후 한번만 실행
JUnit이 테스트 진행 중 ApplicationContext를 만들고 관리해준다.
ex)@RunWith(SpringJUnit4ClassRunner .class)
컴포넌트의 스테레오 타입 태그 <bean>
태그와 동일한 역할을 하는 기본 어노테이션으로 나머지 어노테이션은 비즈니스 레이어를 구분하기 위해 사용 되는 것으로 전부 @Component
를 상속받고 있다.
데이터 액세스 레이어에서 사용
파일, DB등 영속성을 가진 속성을 가지는 클래스
데이터 접근 객체의 역할 수행
서비스 레이어에서 사용
비즈니스 로직을 가진 클래스
프레젠테이션 레이어에서 사용
타입 -> 이름 -> @Qualifier -> 실패
순으로 찾아 자동으로 Bean을 주입한다.
이름 -> 타입 -> @Qualifier -> 실패
순으로 찾아 자동으로 Bean을 주입한다.
동일한 타입, 이름의 Bean이 여러 개 존재할 시 명시해주는 역할
단순 값 주입 어노테이션
위의 태그들을 통해 자동으로 의존관계를 주입하기 위해선 XML 파일에 해당 태그를 사용해 Bean을 찾기위한 패키지를 지정해줘야한다.
bean.xml
<context:component-scan base-package="myspring.di.annot"></context:component-scan>
굳