Spring Framework와 Spring Boot 비교
07 Aug 2022패스트캠퍼스 Spring Boot 강의 정리
Spring 핵심 기능
The IoC Container
- 제어의 역전
- 라이브러리를 사용할 때는 내 코드가 라이브러리 호출
- 프레임워크를 사용할 때는 프레임워크가 내 코드를 호출
@SpringBootTest
class HelloServiceTest {
// 프레임워크가 코드를 호출하여 HelloService를 주입해준다
@Autowired
private HelloService helloService;
@Test
void test() {
String name = "Tom";
String result = helloService.hello(name);
// 코드에서 라이브러리를 호출한다
Assertions.assertEquals("hello Tom", result);
}
}
Resources
- low-level resource에 접근할 수 있는 기능 제공
- UrlResource
- ClassPathResource
- FileSystemResource
- PathResource
- ServletContextResource
- InputStreamResource
- ByteArrayResource
Validation, Data Binding and Type Conversion
- 데이터 검증
- 데이터를 인식하고 자료형에 할당
- 데이터 자료형 변환
// 데이터 검증
public class Person {
@NotNull
@Size(min=2, max=30)
privage String name;
}
// 데이터 인식 & 자로형 할당
@GetMapping("/employees/{id}")
public String getEmployeeById(@PathVariable String id) {
return "ID: " + id;
}
// 데이터 자료형 변환
package org.springframework.core.convert.support;
final class StringToInteger implements Converter<String, Integer> {
public Integer convert(String source) {
return Integer.valueOf(source);
}
}
Spring Expressoin Language(SpEL)
- 스프링 애플리케이션의 런타임에 다양한 데이터에 접근하기 위한 언어
- 스프링에 특화되어 더 다양한 기능 제공
@Value("${value.from.file}")
privatge String valueFromFile;
Aspect Oriented Programming with Spring
- AOP(관점 지향 프로그래밍): 공통 기능을 코드 밖에서 필요한 시점에 적용 가능
- 스프링은 AOP를 적극적으로 사용 & 지원
- Proxy, Aspect, Join Point, Advice, Pointcut, Weaving
- CGLib, AspectJ
- AOP를 사용하지 않거나 몰라도 프레임워크를 사용할 수 있음
// 트랜잭션을 보장해준다
@Transactional
public boolean update(int age) {
return userService.updateAge(age);
}
Null-safety
- null-safe한 코드를 작성할 수 있는 방법 지원
@Nullable
,@NonNull
,@NonNullApi
,@NonNullFields
Logging
- 별도 설정 없이 로깅 구현체 사용 가능
- SLF4J + Logback
- Log4j 2
- JUL(java.util.logging)
Spring Boot 주요 기능
- stand-alone 스프링 애플리케이션
- 임베디드 톰캣 내장 (WAR 배포 필요없음)
- 빌드 설정을 단순화해주는 기초 세팅과 의존성
- 스프링 및 서드 파티 라이브러리 자동 설정
- 제품 레벨로 사용할 수 있는 기능
- XML 설정 필요 없음