본문 바로가기

Spring-Boot22

토비의 스프링 3.1 Vol.1 750p ~ 850p 정리 (완료) 8.5 정리 - 스프링은 그 개발철학과 목표를 분명히 이해하고 사용해야 한다. - 스프링은 오픈소스 소프트웨어이며, 애플리케이션 개발의 모든 기술과 영역을 종합적으로 다루는 애플리케이션 프레임워크다. - 엔터프라이즈 애플리케이션 개발의 복잡함은 비즈니스 로직과 엔터프라이즈 시스템의 기술적인 요구에 의해 발생한다. 기존의 접근 방법은 이 복잡도를 낮추지 못하며 자바의 객체지향적인 장점을 포기해야 한다는 문제점이 있다. - 자바의 근본인 객체지향적인 원리에 충실하게 개발할 수 있으며, 환경과 규약에 의존적이지않은 POJO를 이용한 애플리케이션 개발은 시스템 개발의 복잡함이 주는 많은 문제를 해결할 수 있다. - 스프링의 목적은 이런 POJO를 이용해 엔터프라이즈 애플리케이션을 쉽고 효과적으로 개발할 수 있도.. 2024. 1. 5.
토비의 스프링 3.1 Vol.1 650p ~ 750p 정리 7.6 스프링 3.1의 DI - 정책과 관례를 이용한 프로그래밍 7.6.1 자바 코드를 이용한 빈 설정 - 테스트 컨텍스트의 변경 @ContextConfiguration - 스프링 테스트가 테스트용 DI 정보를 어디서 가져와야 하는지 지정할 때 사용하는 애노테이션이다. - 제거 XML의 내용을 TestApplicationContext 내부로 옮기는 작업을 본격적으로 진행해 보자. - 의 전환 - 전용 태그 전환 7.6.2 빈 스캐닝과 자동와이어링 - @Autowired를 이용한 자동와이어링 - @Component를 이용한 자동 빈 등록 7.6.3 컨텍스트 분리와 @Import - @import 7.6.4 프로파일 - @Profile과 @ActiveProfiles - 컨테이너의 빈 등록 정보 확인 - 중첩.. 2024. 1. 4.
토비의 스프링 3.1 Vol.1 550p ~ 650p 정리 6.8.3 테스트를 위한 트랜잭션 애노테이션 - @Rollback 테스트용 트랜잭션은 테스트가 끝나면 자동으로 롤백된다. 롤백을 하지 않고 DB에 커밋하고 싶다면 @Rollback 애너테이션을 사용하자. @Test @Transactional @Rollback(false) public void transactionSync() { ... } - @TransactionConfiguration @Transaction은 테스트 클래스에 넣어서 모든 테스트 메소드에 일괄 적용할 수 있지만 @Rollback 애너테이션은 메서드 레벨에만 적용할 수 있다. 클래스 레벨에 @Rollback(false)를 적용하고싶다면? -> @TransactionConfiguration(defaultRollback=false)를 적용하자.. 2024. 1. 2.
토비의 스프링 3.1 Vol.1 450p ~ 550p 정리 6.3.4 다이내믹 프록시를 위한 팩토리 빈 - 팩토리 빈의 설정 방법 '&'를 빈 앞에 붙여주면 팩토리 빈 자체를 돌려준다. - 다이내믹 프록시를 만들어주는 팩토리 빈 - 트랜잭션 프록시 팩토리 빈 - 트랜잭션 프록시 팩토리 빈 테스트 6.3.5 프록시 팩토리 빈 방식의 장점과 한계 - 프록시 팩토리 빈의 재사용 - 프록시 팩토리 빈 방식의 장점 1. 타깃 인터페이스를 구현하는 클래스를 일일이 만드는 번거로움을 제거할 수 있다. 2. 팩토리 빈을 이용한 DI까지 더해주면 번거로운 다이내믹 프록시 생성 코드도 제거할 수 있다. - 프록시 팩토리 빈의 한계 중복의 한계 6.4 스프링의 프록시 팩토리 빈 6.4.1 ProxyFactoryBean 프록시를 생성해서 빈 오브젝트로 등록하게 해주는 팩토리 빈 - .. 2024. 1. 2.
토비의 스프링 3.1 Vol.1 350p ~ 450p 정리 5.2 트랜잭션 서비스 추상화 - 테스트 실패의 원인 트랜젝션의 문제, upgradeLevels() 메서드가 하나의 트랜잭션 안에서 동작하지 않았기 때문이다. 5.2.2 트랜잭션 경계설정 트랜잭션 롤백 - 두 개의 SQL 작업 중 하나가 실패하면 앞에서 처리한 SQL 작업도 취소 시키는 것 - JDBC 트랜잭션의 트랜잭션 경계설정 트랜잭션의 경계 - 애플리케이션 내에서 트랜잭션이 시작되고 끝나는 위치를 트랜잭션의 경계라고 부른다. 로컬 트랜잭션 - 하나의 DB 커넥션 안에서 만들어지는 트랜잭션을 로컬 트랜잭션이라고 한다. - UserService와 UserDao의 트랜잭션 문제 왜 UserService의 upgradeLevels()에는 트랜잭션이 적용되지 않았을까? JdbcTemplate에서는 메소드 호.. 2023. 12. 31.
토비의 스프링 3.1 Vol.1 250p ~ 350p 정리 3.5.3 템플릿/콜백의 응용 - 템플릿 / 콜백의 재설계 - 제네릭스를 이용한 콜백 인터페이스 제네릭스를 적용하여 다양한 오브젝트 타입을 지원하는 인터페이스나 메소드를 정의해 보자. //타입 파라미터를 적용한 LineCallback public inteface LineCallback { T doSomethingWithLine(String line, T value); } //타입 파라미터를 추가해서 제네릭 메소드로 만든 lineReadTemplate() public T lineReadTemplate(String filepath, LineCallback callback, T initVal) throws IOException { ... } 3.7 정리 - JDBC와 같은 예외가 발생할 가능성이 있으며 공유 .. 2023. 12. 30.