분류 전체보기(72)
-
[트랜잭션]
두 개 이상의 쿼리를 모두 성공적으로 실행해야 데이터가 정상적으로 처리되는 경우 DBMS는 트랜잭션을 이용해서 두 개 이상의 쿼리를 마치 한 개의 쿼리처럼 처리한다. 트랜잭션을 커밋하면 모든 쿼리를 실제 데이터에 반영, 트랜잭션을 커밋하기 전에 에러가 발생하면 쿼리 결과를 실제 데이터에 반영하지 않고 취소(롤백) 1. 네임스페이스 등록 2. 트랜잭션 관리자 등록 3. 트랜잭션 어드바이스 설정 엘리먼트로 트랜잭션을 지정할 메소드를 지정한다. get으로 시작하는 모든 메소드는 읽기전용(read-only=true)으로 처리되어 트랜잭션 관리대상에서 제외하고 나머지 메소드들은 트랜잭션 대상에 포함한다. 엘리먼트가 가질 수 있는 속성 -name 트랜잭션이 적용될 메소드 이름 지정 -read-only 읽기전용 여부..
2021.10.08 -
[스프링JDBC]
1. target>>pom.xml 파일에 DBCP 관련 설정 추가 org.springframework spring-jdbc ${org.springframework-version} commons-dbcp commons-dbcp 1.4 2. 프로퍼티 파일로 DataSource 설정 3. applicationContext.xml파일에 DataSource 설정 & jdbcTemplate 클래스를 등록 4. BoardDAOSpring 클래스 생성 기존 작성했던 BoardDAO 클래스가 아닌, "스프링 JDBC 기반의 BoardDAOSpring" 으로 DB 연동하기 위함 @Autowired 어노테이션을 이용하여 jdbcTemplate 타입의 객체를 의존성 주입처리 package com.springbook.biz.b..
2021.10.08 -
[AOP] 어노테이션 기반
1. xml 파일에 엘리먼트 선언 2. AOP 관련 어노테이션들을 어드바이스 클래스에 설정 @Aspect가 설정된 애스팩트 객체에는 반드시 포인트컷과 어드바이스를 결합하는 설정이 있어야 한다. 아래 예시에서, LogAdvice 클래스 위에 @Aspect가 설정되었으므로 스프링컨테이너는 LogAdvice 객체를 애스팩트 객체로 인식한다. allPointcut()과 getPointcut() 메소드 위에 각각 @Pointcut 선언 "allPointcut()"과 "getPointcut()"은 각각 참조 메소드이름이 된다. @Before는 어드바이스 어노테이션으로서 괄호를 추가하고 참조 메소드를 지정하여 포인트컷을 참조한다. 1. 포인트컷을 외부 독립된 클래스로 따로 설정 클래스마다 비슷하거나 같은 포인트컷이 ..
2021.10.08 -
[AOP] xml 기반
횡단관심: 메소드마다 공통으로 등장하는 로깅이나 예외, 트랜잭션 처리 같은 코드들 핵심관심: 사용자의 요청에 따라 실제로 수행되는 핵심 비즈니스 로직 1. pom.xml 에 AOP 관련 라이브러리 추가 2. aop 네임스페이스 추가 3. LogAdvice 클래스를 스프링 설정 파일에 등록 4. aop 관련 설정 추가 포인트컷을 선언한다, 유일한 id를 할당하여 애스팩트를 설정할 때 포인트컷을 참조하는 용도로 사용한다, expression 속성에 따라 필터링되는 메소드가 달라진다. 핵심관심에 해당하는 포인트컷 메소드와 횡단 관심에 해당하는 어드바이스 메소드를 결합하기 위해 사용 5. 결과 확인 insertBoard() 메서드와 getBoardList() 메서드가 호출될 때 LogAdvice 클래스의 pri..
2021.10.07 -
[어노테이션]
1. [Namespace] 탭에서 context 항목 체크 2. 엘리먼트 정의 base-package 속성에 해당하는 패키지로 시작하는 모든 패키지가 스캔 대상에 해당 @Component가 설정된 클래스들을 자동으로 객체 생성 3. 클래스에 @component 설정 @Service 비즈니스 로직을 처리 @Repository 데이터베이스 연동을 처리 @Controller 사용자 요청을 제어 4. 실행 의존성 주입 어노테이션 @Autowired 필드에 @Autowired 애노테이션이 붙어 있으면 스프링이 해당 타입의 빈 객체를 찾아서 자동으로 필드에 할당한다 @Qualifier 특정 객체의 이름을 이용하여 의존성 주입할 때 사용한다
2021.10.06 -
[의존성주입] Setter 인젝션
1. SamsungTV 클래스에 setter 메서드 추가 2. 설정파일 엘리먼트 사용 name="speaker"의 경우 호출되는 메서드가 setSpeaker()이다. name="price"의 경우 호출되는 메서드가 setPrice()이다. 다른 bean 객체로 인자를 넘기는 경우 ref 속성을 사용, 기본형 데이터를 넘기려면 value 속성을 사용 3. 결과 p 네임스페이스 사용하기 p:변수명-ref="참조할 객체의 이름이나 아이디" p:변수명="설정할 값 스프링 프로퍼티 설정
2021.10.06