Spring
-
JDBCSpring 2020. 1. 29. 16:03
스프링은 JDBC 기반의 DB연동 프로그램을 쉽게 개발할 수 있도록 JdbcTemplate 클래스를 지원. JdbcTemplate은 템플릿 메소드 패턴이 적용된 클래스이다. 템플릿 메소드 패턴: 복잡하고 반복되는 알고리즘을 캡슐화해서 재사용하는 패턴. 반복되는 DB 연동 로직은 JdbcTemplate 클래스의 템플릿 메소드가 제공, 개발자는 달라지는 SQL구문과 설정값만 신경 쓰면 된다. DAO 클래스에서는 JdbcTemplate 클래스가 제공하는 메소드를 호출하여 DB연동을 처리. 그러면 JdbcTemplate 클래스는 내부적으로 JDBC API 를 이용햐여 실제 DB연동작업을 처리. DataSource설정 JdbcTemplate 클래스가 JDBC API를 이용하여 DB연동을 처리하려면 데이터베이스로부..
-
어노테이션 기반 AOPSpring 2020. 1. 28. 23:39
AOP를 어노테이션으로 설정하려면 가장먼저 스프링 설정 파일에 엘리먼트를 선언해야 한다. -> 어노테이션을 위한 Component-scan 과 비슷하네 그러면 스프링 컨테이너는 AOP관련 어노테이션들을 인식하고 용도에 맞게 처리해준다. AOP 관련 어노테이션들은 어드바이스 클래스에 설정한다. 어드바이스 클래스에 선언된 어노테이션들을 스프링 컨테이너가 처리하려면, 어드바이스 객체가 생성되어 있어야한다. 즉, 등록 하거나, @Service 어노테이션 사용해서 컴포넌트가 검색될 수 있도록 해야 한다. 포인트컷 @Pointcut (하나의 어드바이스 클래스 안에 여러 개의 포인트컷을 선언할 수 있다.) 따라서 여러 포인트컷을 식별하기 위한 식별자가 필요한데 이때 사용하는것이 빈 메소드? 이다. AOP설정에서 가장..
-
After Returning ,After Throwing ,AroundSpring 2020. 1. 28. 22:34
클라이언트가 호출한 비즈니스 메소드 정보를 알아내기 위해 JoinPoint 객체를 첫 번쩨 매개변수로 선언한다. 그리고 Object 타입의 변수도 두 번째 매개변수로 선언되어 있는데. 이를 '바인드 변수'라고 한다. 바인드 변수는 비즈니스 메소드가 리턴한 결과값을 바인딩할 목적으로 사용하며, 어떤값이 리턴될지 모르기 때문에 Object로 선언. 바인드 변수가 추가됐다면 반드시 바인드 변수에 대한 매핑 설정을 스프링 설정 파일에 추가해야 한다. returning 속성 사용(반드시 어드바이스 메소드 매개변수로 선언된 바인드 변수 이름과 같아야 한다.) After Throwing또한 마찬가지, 다만 속성이 throwing 으로 변할 뿐 Around 어드바이스의 경우, 다른 어드바이스와 다르게 반드시 Proce..
-
JoinPointSpring 2020. 1. 28. 16:09
------------------------------------------------------------------------------------------------------ JoinPoint 메소드 Signature getSignature() : 클라이언트가 호출한 메소드의 시그니처(리턴타입, 이름, 매개변수) 정보가 저장된 Signature 객체 리턴 Object getTarget() : 클라이언트가 호출한 비즈니스 메소드를 포함하는 비즈니스 객체 리턴 Object[] getArgs() : 클라이언트가 메소드를 홀출할 때 넘겨준 인자 목록을 Object 배열로 리턴. ----------------------------------------------------------------------..
-
AOP(execution)Spring 2020. 1. 27. 19:20
사용자는 시스템을 사용하면서 자연스럽게 비즈니스 컴포넌트의 여러 Joinpoint를 호출하게 된다. 이때 특정 Pointcut으로 지정한 메소드가 호출되는 순간, 어드바이스 객체의 어드바이스 메소드가 실행. 어드바이스 메소드의 동작시점은 5가지로 지정 가능( Before,After,After-Returning,After-Throwing,Around), 포인트컷으로 지정한 메소드가 호출될 때, 어드바이스 메소드를 삽입하도록 하는 설정을 Aspect 라고 한다. 이 Aspect 설정에 따라 위빙이 처리된다. : AOP 설정의 루트 엘리먼트, 여러번 사용가능 , 하위에는 엘리먼트 위치할수있다. 엘리먼트는 포인트컷 지정을 위해 사용, aop:config의 자식이나 aop:aspect의 자식 엘리먼트로 사용가능,..
-
AOPSpring 2020. 1. 27. 03:30
Aspect Oriented Programming : 메소드마다 공통으로 등장하는 로깅,예외,트랜잭션 처리 같은 코드들(Crosscutting Concerns 횡단관심)을 분리시킴. pom.xml 에서 AOP 라이브러리 추가. Joinpoint : 클라이언트가 호출하는 모든 비즈니스 메소드, '포인트컷 대상 혹은 후보'라고도 한다. Joinpoint중에서 Pointcut이 선택 되기 때문에, Pointcut : 필터링된 Joinpoint 의미. 많은 비즈니스 메소드 중에서 우리가 원하는 특정 메소드에서만 Crosscutting Concerns 기능을 수행시키기 위해서 Pointcut이 필요하다. Advice: 횡단관심(Crosscutting Concerns)에 해당하는 공통 기능의 코드를 의미, 독립된 ..
-
Spring AnnotationSpring 2020. 1. 22. 18:02
key=value 형태의 데이터를 등록하고 사용할 때는 java.util.Properties 라는 컬렉션을 사용하며, 엘리먼트 사용 서울시 어노테이션 설정을 추가하기 위해선 네임스페이스에서 Context 추가 후 . 엘리먼트를 정의해야 한다. 그렇게하면 스프링 컨테이너는 클래스 패스에 있는 클래스들을 스캔 @Component가 설정된 클래스 들을 자동으로 객체 생성. 어노테이션 또한 기본 생성자가 당연히 필요하고, bean id = "" 처럼 @Component(id)를 해야 클라이언트가 스프링 컨테이너에게 요청할수 있겠지. 만약 id나 name 속성을 지정하지 않았다면? 스프링 컨테이너가 자동으로 이름을 설정. 이름은 클래스 이름의 첫글자를 소문자로 변경하기만 하면 된다. @Autowired : 대부분..