Spring - 서비스 계층의 분리와 @Transactional 2
2022. 10. 1. 09:01
Spring/Ch3. Spring DI, AOP
테스트를 위해 테이블 b1 생성 @Transactional 없을 때 TxService.java package com.jcy.usedhunter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class TxService { @Autowired A1Dao a1Dao; @Autowired B1Dao b1Dao; public void insertA1WithoutTx() throws Exception { a1Dao.insert(1, 100); a1Dao.insert(1, 200); } } TxServiceTest.java package..
Spring - 서비스 계층의 분리와 @Transactional
2022. 9. 30. 18:35
Spring/Ch3. Spring DI, AOP
서비스 계층의 분리 - 비지니스 로직의 분리 RegisterController : @Controller UserService : @Service UserDao, UserHistoryDao : @Repository TrasactionManager DAO 의 각 메서드는 개별 Connection 을 사용 @Repository public class A1Dao { @Autowired DataSource ds; public int insert(int key, int value) throws Exception{ Connection conn = null; PreparedStatement pstmt = null; try { //conn = ds.getConnection(); conn = DataSourceUtils...
Spring - AOP
2022. 9. 30. 13:30
Spring/Ch3. Spring DI, AOP
AOP(Aspect Oriented Programming) 관점 지향프로그래밍, 횡단 관심사, cross-cutting concerns 부가 기능(advice)을 동적으로 추가해주는 기술 메서드의 시작 또는 끝에 자동으로 코드(advice)를 추가 AopMain.java package com.jcy.usedhunter; import java.lang.reflect.Method; public class AopMain { public static void main(String[] args) throws Exception { MyAdvice myAdvice = new MyAdvice(); Class myClass = Class.forName("com.jcy.usedhunter.MyClass"); Object ..
Spring - Transaction
2022. 9. 29. 16:36
Spring/Ch3. Spring DI, AOP
Transaction 더 이상 나눌 수 없는 작업의 단위 Transaction 의 속성 - ACID 원자성(Atomicity) - 나눌 수 없는 하나의 작업으로 다뤄주어야 한다. 일관성(Consistency) - Tx 수행 전과 후가 일관된 상태를 유지해야 한다. 고립성(Isolation) - 각 Tx는 독립적으로 수행되어야 한다. 영속성(Durability) - 성공한 Tx의 결관느 유지되어햐 한다. 커밋(Commit), 롤백(Rollback) 커밋 : 작업 내용을 DB에 영구적으로 저장 롤백 : 최근 변경사항을 취소(마지막 커밋으로 복귀) Tx의 isolation level READ UNCOMMITED - 커밋되지 않은 데이터도 읽기 가능(dirty read) READ COMMITED - 커밋된 데이..
Spring DI - Spring DI 흉내내기
2022. 9. 25. 17:08
Spring/Ch3. Spring DI, AOP
변경에 유리한 코드(1) - 다형성, factory method class Car{} class SportsCar extends Car{} class Truck extends Car{} Car car = getCar(); static Car getCar(){ return new SportsCar(); } static Car getCar(){ return new Truck(); } 변경에 유리한 코드(2) - Map, 외부 파일 Car car = getCar(); static Car getCar() throws Exception { // config.txt 를 읽어서 Properties 에 저장 Properties p = new Properties(); // Map(Object, Object), Prope..
Spring - Spring DI(1)
2022. 9. 13. 03:03
Spring/Ch3. Spring DI, AOP
변경에 유리한 코드 분리 하자 1. 변하는 것, 변하지 않는 것 2. 관심사 다른 것 3. 중복 코드(ex : AOP) Main1.java package com.fastcampus.ch3.diCopy1; import java.io.FileReader; import java.util.Properties; class Car {} class SportsCar extends Car {} class Truck extends Car{} public class Main1 { public static void main(String[] args) { Car car = new SportsCar(); System.out.println("car = " + car); } static Car getCar() throws Exce..
Ch3-3_Spring DI 활용하기 - 이론
2022. 2. 8. 00:42
Spring/Ch3. Spring DI, AOP
1. 빈(bean)이란? 2. BeanFactory와 ApplicationContext 3. ApplicationContext의 종류 4. Root AC와 Servlet AC 5. ApplicationContext의 주요 메서드 6. IoC와 DI 6. 스프링 애너테이션 - @Autowired 6. 스프링 애너테이션 - @Resource 6. 스프링 애너테이션 - @Component 6. 스프링 애너테이션 - @Value와 @PropertySource 7. 스프링 애너테이션 vs 표준 애너테이션(JSR-330) 8. 빈의 초기화 - 와 setter 8. 빈의 초기화 - 와 생성자 8. 빈의 초기화 - , ,
Ch3-2_Spring DI 흉내내기(2)
2022. 2. 7. 15:28
Spring/Ch3. Spring DI, AOP
2. 객체 컨테이너(ApplicationContext) 만들기 3. 자동 객체 등록하기 - Component Scanning 4. 객체 찾기 - by Name, by Type 5. 객체를 자동 연결 하기(1) - @Autowired 6. 객체를 자동 연결 하기(1) - @Resource
Ch3-1_Spring DI 흉내내기
2022. 2. 7. 00:42
Spring/Ch3. Spring DI, AOP
1. 변경에 유리한 코드(1) - 다향성, factory method 1. 변경에 유리한 코드(2) - Map과 외부 파일