1. Com.springsource.junit : junit
2. Commons-logging : Spring-context가 사용
3. Mysql-connector : Mysql JDBC
4. Spring-aop : 스프링 기능 자체의 aop
5. Spring-bean : 스프링 빈을 활용하는 경우 필요. 스프링의 XML 설정파일과 자바 애노테이션을 파싱 하는데 필요한 클래스 포함
6. Spring-context : 스프링 코어를 확장한 많은 클래스가 들어 있는데 모든 클래스는 EJB, JNDI(Java Naming Directory Interface), JMX용 클래스와 연동하는데 applicationcontext기능을 사용해야 하며 스프링 리모팅 클래스, 동적 스크립팅 언어(제이루비, 그루비등)와 연동하는 클래스, 빈 유효성검증(JSR-303) API, 스케줄링을 하는 클래스도 포함되어 있다.
7. Spring-core : 모든 스프링 모듈에서 필요한 모듈. 다른 스프링 모듈에서 사용하는 공통 클래스가 포함됨.
8. Spring-dao : EmpltyResultDataAccessException 등 사용을 위한 jar
9. Spring-expression : 스프링 표현언어(SpEL) 지원 클래스 포함.
10. Spring-jdbc : 스프링이 지원하는 jdbc.
11. Spring-test.jar
- @RunWith : Junit 프레임워크의 테스트 실행방법을 확장시 사용.
- SpringJUnit4ClassRunner : 어플리케이션컨텍스트를 만들고 관리하는 확장 클래스
- @ContextConfiguration(경로) : 자동으로 만들어줄 어플리케이션 컨텍스트 설정파일
12. Spring-tx : DuplicateKeyException.class 파일 존재 및 스프링 트랜잭션
023.서비스추상화_트랜잭션_JTA UserService처럼 어떤 트랜잭션 매니저 구현클래스를 사용해야할지 구체적인 구현 클래스를 알고 있는 것은 DI원칙에 위배된다. 스프링 빈으로 등록하고, DI방식으로 사용하게 해야한다.
역할 위임 레벨변경은 레벨에게
역할 위임 유저정보 셋팅은 유저에게
인터페이스를 사용한 이유는 JDBC, Hibernate 등으로 개방폐쇄원칙
Template JDBC 공통부, 변하는 전략은 인터페이스 구현. 개방폐쇄원칙
19. DataSourceTransactionManager : JDBC 기반 트랜잭션 클래스. dataSource 빈으로부터 Connection을 가져와 트랜잭션을 처리해야하므로 dataSource 프로퍼티를 갖음.
19. JTA, JAP, JDO를 사용하고 싶다면 해당 transactionManager 빈의 설정만 고치는 것으로 끝남. UserService 코드는 조금도 수정할 필요가 없다.
18. 프로퍼티 이름은 관례를 따라 transactionManager라고 만드는 것이 편함.
24. throws Exception은 삭제해도 됨. 스프링 트랜잭션은 언체크드 예외로 전환함
25. DI받은 트랜잭션 매니저를 공유해서 사용. 멀티스레드 환경에서도 안전하다.
77. UserService에 주입한 트랜잭션과 동일한 트랜잭션을 testUserService에 주입. 스프링의 장점
84. fail : 테스트가 catch에 안 걸리고 성공된다면 테스트를 실패처리함
85. 예외를 잡았지만 아무 처리도 하지 않았으므로 걍 지나감
'스프링' 카테고리의 다른 글
[java] 싱글톤패턴 (0) | 2020.11.04 |
---|---|
[Spring] 자바메일_Gmail셋팅_기본1 (0) | 2020.11.03 |
[spring] JTA 트랜잭션 2 (0) | 2020.11.03 |
[Spring] 트랜잭션_기본1 (0) | 2020.11.02 |
[Spring] 서비스 추상화_역할위임(Enum)과 상수 (0) | 2020.11.02 |