Study/Spring

    Spring과 Spring Boot 차이 한 줄 요약

    스프링과 스프링 부트. 스프링 부트가 더 편한 건 알겠는데 정확한 차이점을 알고 싶어서 검색해 보면 비슷한 내용의 긴 글들만 마주치게 된다. 그래서 둘의 차이점을 한 줄로 요약하면 뭔데? Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". 스프링 부트로 "그냥 실행"만 하면 독립적이고 상용화 수준인 스프링 애플리케이션을 만들 수 있다. 스프링 공식 사이트의 스프링 부트 페이지 첫 문장이다. 스프링을 처음 시작했을 때 환경 설정에 애를 먹었던 경험이 있을 것이다. 그에 비해 부트는 환경 설정이 비교적 간편하다. 스프링 부트는 바로 "just run"의..

    트랜잭션 이해

    트랜잭션에 대해 이미 알고 있는 것 예외 발생 시 롤백해줌 스프링에서 주로 서비스 계층 클래스에 @Transactional 애노테이션을 붙여서 사용 클래스에 @Transactional 붙이면 메서드마다 적용됨 트랜잭션 스크립트 vs 선언적 트랜잭션 A, B, C라는 메서드가 있을 때 A, B, C를 하나의 트랜잭션에 넣으려면? 트랜잭션 스크립트 Connection connection = dataSource.getConnection(); try { connection.setAutoCommit(false); doSomething(connection, id, ...); connection.commit(); } catch (Exception e) { connection.rollback(); throw new I..

    Spring Service단에 Interface가 필요한가?

    개인적으로 신규 프로젝트가 좋은 이유는 코드 구조를 바꿔볼 수 있기 때문이다. 기존 프로젝트의 코드를 리팩토링하기란 촉박한 일정에 맞춰 많은 기능을 구현해야 하는 업무 상황상 현실적으로 쉽지 않다. 이 기회를 노려 구조를 바꿔보던 중 Spring Service단에 Interface가 필요한가? 라는 질문을 받게 되었다. 1. 기존에 접하던 구조 Controller단에서 비즈니스 로직 처리 후 바로 DAO 호출하는 코드가 많음 즉 Controller단과 Service단의 분리가 되어있지 않음 특정 조건에 따라 데이터를 가공하는 로직을 이해하는데 시간이 너무 많이 소모된다 중복 로직이 생길 경우 코드는 미친듯이 늘어난다 이번 프로젝트에 REST API를 적용하게 되었고, 그 정신에 알맞게 Controller..