IoC(제어의 역전)
스프링 IoC 컨테이너
빈(Bean) : 스프링이 관리하는 객체
스프링 IoC 컨테이너: '빈'을 모아둔 통
// 1. ProductService 객체 생성
ProductService productService = new ProductService();
// 2. 스프링 IoC 컨테이너에 빈 (productService) 저장
// productService -> 스프링 IoC 컨테이너
스프링 '빈' 이름: 클래스의 앞글자만 소문자로 변경
'빈' 아이콘 확인 -> 스프링 IoC에서 관리할 '빈' 클래스라는 표시
@Component 적용 조건
@Configuration
@ComponentScan(basePackages = "com.example.myselectshop")
class BeanConfig { ... }
@SpringBootApplication에 의해 default 설정 되어 있음
스프링 IoC 컨테이너에 의해 관리되는 클래스에서만 가능
Spring 4.3 버전부터 @Autowired 생략가능
생성자 선언이 1개 일 때만 생략 가능
Lombok의 @RequestArgsConstructor를 사용하면 다음과 같이 코딩 가능
@RestController
@RequiredArgsConstructor // final로 선언된 멤버 변수를 자동으로 생성합니다.
public class ProductController {
private final ProductService productService;
// 생략 가능
// @Autowired
// public ProductController(ProductService productService) {
// this.productService = productService;
// }
}
@Component
public class ProductService {
private final ProductRepository productRepository;
@Autowired
public ProductService(ApplicationContext context) {
// 1.'빈' 이름으로 가져오기
ProductRepository productRepository = (ProductRepository) context.getBean("productRepository");
// 2.'빈' 클래스 형식으로 가져오기
// ProductRepository productRepository = context.getBean(ProductRepository.class);
this.productRepository = productRepository;
}
// ...
}
스프링 Annotation
@Componet, @Autowired
@를 붙여 선언 -> 스프링이 처리
스프링 3계층 어노테이션은 모두 @Component 포함
1. @Controller, @RestController
2. @Service
3. @Repository
@Repository
The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform.
기업용 어플리케이션의 요구사항 해결에 초점을 맞춘 프레임워크
신뢰성이 중요, 서버 안정성 중요, 데이터 관리도 중요, 여러 사용자가 동시접속 시 데이터 일관성 유지도 중요.
Enterprise applications 개발 편의성 제공
스프링의 핵심요소?
A key element of Spring is infrastructural support at the application level: Spring focuses on the "plumbing" of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment environments.
API: 클라와 서버의 상호작용
비즈니스로직(@Service) - 실제 사용자의 요구사항 처리
서버와 DB 상호작용..
saveAndFlush()