본문 바로가기

전체 글

(164)
6.5 스프링 AOP Spring AOP 주요 용어 Aspect 공통 기능을 모듈화한 기본 모듈이다. Target 부가기능을 부여할 대상이다. Join point 어드바이스가 적용될 수 있는 위치를 말한다. Advice 타겟에게 제공할 부가기능을 담은 모듈이다. Point cut 어드바이스를 적용할 조인 포인트를 선별하는 기능 Advisor 포인트컷 + 어드바이저 스프링 aop를 적용해서 테스트를 실행했다. NameMathchMethodPointcut의 getClassFilter 메서드를 구현해서 클래스 필터를 "HelloT"로 시작하는 클래스에 매칭시키고 NameMathchMethodPointcut.setMappedName("sayH")로 sayH로 시작하는 메서드에 필터를 적용했다. ProxyFactoryBean 생성 후..
토비의 스프링 6.1 트랜잭션 코드의 분리 UserService 인터페이스를 생성하고 기존의 UserService 클래스를 UserServiceImpl클래스로 변경한다. 트랜잭션이 없는 UserServiceImpl과 트랜잭션 처리가 있는 UserServiceTx클래스를 만들어준다. public interface UserService { void add(User user); void canUpgradeLevels() throws SQLException; } public class UserServiceImpl implements UserService{ UserDao userDao; public static final int MIN_LOGCOUNT_FOR_SILVER = 50; public static final int MIN_RECOMMEND_FOR..
이펙티브 자바 2. 빌더를 고려하라 1. 생성자를 이용한 초기화 생성자로 넘겨주고 싶은 매개변수가 많고 기본값으로 지정하고 싶은 필드가 많을 수 있다. 이 때 생성자를 체이닝을 이용하여 초기화 할 수 있다. public class NutritionFacts { private final int servingSize; private final int servings; private final int calories; private final int fat; private final int sodium; private final int carbohydrate; public NutritionFacts(int servingSize, int servings){ this(servingSize, servings, 0); } public Nutrition..
토비의 스프링 5.2 트랜잭션 서비스 추상화 레벨을 변경하는 비즈니스 로직을 실행시킬 때 네트워크나 어떤 문제가 생겨서 중간에 예외가 터진다면 어떻게 될까? 일부 유저의 정보는 변경되고 예외가 터진후에 유저의 정보는 변경되지 않을 것이다. 이 때 두 가지 방법이 있다. 1. 이미 처리된 정보는 유지하고 유저들의 요청이나 오류를 수정해서 반영하는 방법이 있다. 2. 하나의 묶음처리(트랜잭션)로 올바르게 처리된 정보를 되돌린다.(롤백) 여기서 하나의 트랜잭션으로 묶어서 롤백하는 방법을 알아보자. 먼저 1초도 안되는 테스트 코드에서 네트워크 예외를 처리하지 말고 가짜 객체를 만들어서 id가 중복되게 만들고 예외가 터지게 만들어보자. static class TestUserService extends UserService { private String id..
토비의 스프링 5.1 서비스 추상화 기존에 있던 C,R,U,D에 추가로 등급을 판별해주는 비즈니스 로직을 추가하려고 한다. USER 클래스에 추가적인 필드를 추가해준다. level, login, recommend 추가 public class User { public User(){} public User(String id, String name, String password, Level level, int login, int recommend) { this.id = id; this.name = name; this.password = password; this.level = level; this.login = login; this.recommend = recommend; } String id; String name; String passwor..
자바스크립트 유용한 함수정리 배열 순회 forEach문으로 배열 순회하기 // forEach문 let nums = [1,2,3,6,6,7,2,2,8,9]; nums.forEach( (e,i) => { console.log(e,i); } ) 문자열 분해 String ' '을 기준으로 잘라서 배열에 담기 // String ' '을 기준으로 분할해서 배열에 담기 const str = "Hello World"; const arr = str.split(' '); console.log(`value: ${arr}, typeof: ${typeof arr}`); console.log(`value: ${arr[0]}, typeof: ${typeof arr[0]}`); console.log(`value: ${arr[1]}, typeof: ${typeo..
이펙티브 자바 (1).생성자 대신 정적 팩토리 메서드를 고려하라 정적 팩터리 메서드의 장점 1.이름을 가질 수 있다. 생성자는 이름을 가질 수 없기 때문에 생성자 매개변수로 같은 데이터 타입의 다른 필드를 주고 싶을 때 불편하다. 이 때 이름을 가질 수 있는 정적 팩터리 메서드를 사용할 수 있다. public class Order { private boolean prime; private boolean urgent; private Product product; /* public Order(Product product, boolean prime){ this.product = product; this.prime = prime; } public Order(boolean urgent, Product product){ this.product = product; this.urg..
토비의 스프링 파트 4 예외 올바른 예외처리는 단순히 화면에 오류메시지를 출력하는게 아니다. 무분별하게 무조건 예외를 throws 하는 것도 아니다. 예외를 처리할 때 지켜야 할 핵심원칙은 한가지다. 모든 예외는 적절하게 복구되든지 아니면 작업을 중단시키고 운영자 또는 개발자에게 분명하게 통보돼야 한다. 예외의 종류 체크 예외 Exception 클래스와 RuntimeException을 상속받지 않은 클래스들을 체크 예외라고 한다. 체크 예외는 예외처리를 강제하기 때문에 catch블록에서 예외를 처리하거나 throws를 정의해서 멧드 밖으로 던져야 한다. 언체크 예외 RuntimeException을 상속받은 클래스들을 언체크 예외라고한다. 예외처리를 해주어도 되고 안해줘도 된다. 예외처리 방법 예외 복구 예외상황을 파악하고 문제를 해..