IoC -> DI
IoC : 제어의 역전, 제어의 흐름을 전통적인 방식과 다르게 뒤바꾸는 것 -> FrameWork가 내 코드를 호출
DI : 의존성 주입, 사용할 객체를 외부에서 주입받는 것
Reflection API : 클래스의 정보를 얻을 수 있는 기능을 제공
실행 중 객체 생성, 메서드 호출 등을 가능하게 한다.
@Autowired : 인스턴스 변수, setter, 참조형 매개변수를 가진 생성자, 메서드에 적용
Spring Container에서 타입으로 빈을 검색해서 참조 변수에 자동 주입(DI)
검색된 빈이 n개이면, 그 중에 참조변수와 이름이 일치하는 것을 주입
주입 대상이 변수일 때, 검색된 빈이 1개 아니면 예외 발생
주입 대상이 배열일 때, 검색된 빈이 n개라도 예외 발생X
@Autowired(required=false)일 때, 주입할 빈을 못찾아도 예외 발생X
@Resource : 객체를 이름으로 찾아서 자동 연결
일치하는 이름의 빈이 없으면, 예외 발생
Bean : Spring Container(Application Context)가 관리하는 객체
ApplicationContext(자식) : 객체(Bean) 저장소, Bean을 저장 관리, Map의 형태로 저장
BeanFactory(부모) : Bean(객체)을 생성, 연결 등의 기본 기능을 정의
@Configuration : Spring의 설정 파일임을 명시
@Bean : Bean객체 등록, 메서드 반환값을 Bean으로 등록
@Scope : 빈의 범위를 정의
@ComponentScan : @Component가 붙은 클래스를 자동 검색해서 빈으로 등록
@Component : 자동 빈 등록, Spring의 빈으로 등록되어 관리됨을 나타냄
@Value : 읽어올 Key값 지정, 외부 설정 값을 주입받을 때 사용
@PropertySource : 읽어올 파일 지정
스타터(starter) : 의존 라이브러리 자동관리, 여러 관련 라이브러리를 묶어서 패키지로 제공
AutoConfiguration : 빈 등록 자동관리
@SpringBootApplication : @Configuration + @EnableAutoConfiguration + @ComponentScan
@Conditional : 조건에 따라 빈을 등록하는 어노테이션
Condition : @Conditional에서 사용하는 인터페이스로 빈 등록 조건을 정의하는 matchs메서드를 구현
@Import : 다른 설정 클래스나 ImportSelector를 통해 빈을 추가하거나, 설정 파일을 모듈화 하는 어노테이션
설정 파일의 모듈화 : 애플리케이션의 설정을 여러 개의 개별 파일로 나누어 관리하는 방식
ImportSelector : 조건에 따라 동적으로 빈이나 설정 클래스를 선택할 수 있는 인터페이스
조건부 빈 등록
개별 빈 : @Bean + @Component + @Conditional
빈 여러개(그룹) : @Configuration + @Import + ImportSelector(조건부 결정)
@ConfigurationProperties : 사용자 정의 속성 추가
AOP(Aspect Oriented Programming) : 실행중에 코드 자동추가 - 맨앞(Before), 맨뒤(After), 둘다(Around), 코드를 동적으로 추가해주는 기술
로깅, 트렌잭션(Tx), 권한체크
AOP 관련 용어
target : advice가 추가될 객체
advice : target에 동적으로 추가될 부가기능(코드)
join point : advice가 추가될 대상(메서드)
pointcut : 패턴
proxy : target에 advice가 동적으로 추가되어 생성된 객체
weaving : target에 advice를 추가해서 proxy를 생성하는 것
Tx : 데이터베이스 작업을 하나의 단위로 묶어주는 것으로, 여러 작업이 모두 성공적으로 완료되거나, 실패하면 모든 작업을 원상태로 되돌리는 방식
@Transactional : 메서드 또는 클래스에서 트랜잭션을 시작하고, 끝내는 작업을 자동으로 관리
DAO : 데이터에 접근하기 위한 객체 - 데이터베이스에 저장된 데이터를 읽기,쓰기,삭제,변경을 수행
ACID
원자성(Atomicity) : Tx "모두 실행" 또는 "전혀 실행되지 않음".
일관성(Consistency) : Tx 수행 전과 후가 일간된 상태를 유지
고립성(Isolation) : Tx가 각 독립적으로 수행, 중간 상태가 외부에 영향을 미치지 않음
영속성(Durability) : Tx가 성공적으로 완료되면 그 결과는 영구적으로 저장됨, 한번 저장하면 계속 가는것
Isolation Level
READ UNCOMMITED : 커밋되지 않은 데이터도 읽기 가능
READ COMMITED : 커밋된 데이터만 읽기 가능
REPEATABLE READ : Tx이 시작된 이후 변경은 무시됨
SERIALIZABLE : 한번에 하나의 Tx만 독립적으로 수행
@Component가 포함된 애너테이션
@Controller
@Service
@Repository
@ControllerAdvice
@Configuration
@SpringBootApplication
'요약' 카테고리의 다른 글
7. 데이터 모델링 요약(1) - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.03.11 |
---|---|
6. SQL튜닝 요약(1) - 패스트캠퍼스 백엔드 부트캠프 3기 (1) | 2025.03.07 |
4. 스프링 요약 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.02.25 |
3. 자바 용어 요약(2) - 패스트캠퍼스 백엔드 부트캠프 3기 (4) | 2025.01.13 |
2. 자바 용어 요약(1) - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.08 |