https://spring.io/projects/spring-boot
Spring Tool Suite (STS)
STS4는 부트만 개발 가능
(https://spring.io/tools)
jar 파일 다운로드
STS3는 프레임워크, 부트 개발 가능함
(https://github.com/spring-attic/toolsuite-distribution/wiki/Spring-Tool-Suite-3)
general > workspace > utf-8
cotent types > text > java properties file > utf-8
java compiler > jdk11로 바꾸기
cf) 서블릿은 소프트웨어인 톰캣 컨테이너/서버가 서블릿 관리 (생성 ~ 소멸)
스프링은 빈/클래스인 IoC 컨테이너가 다른 빈을 관리한다 -> 용량이 작다
https://docs.spring.io/spring-framework/docs/5.2.25.RELEASE/spring-framework-reference/core.html#spring-core 참고 ! 꼭 들여다보기
IoC (Inversion of Control 제어의 역행) 방법으로 Spring Bean을 관리 (생성~소멸) 한다
Spring Container
Spring Context
cf) 서블릿에서 의존성 설정하는 방법
public class CartServiceImpl implements CartService {
// DAO 연동
CartDAO cartDAO;
public CartServiceImpl (CartDAO cartDAO) {
this.cartDAO cartDAO;
// public void setCartDAO(CartDAO cartDAO){
// this.cartDAO =cartDAO;
}
}
CartService service = new CartServiceImpl(new CartDAO()); // 생성자 통해서 의존성 넣기
// service.setCartDAO(new CartDAO()); // 메서드 통해서 넣기
==> CartServiceImpl과 CartDAO 간에 의존성이 생겼고
개발자가 명시적으로 CartServiceImpl에 CartDAO를 생성해서 값을 전달해줌
서블릿에서는 우리가 직접!!!!! 설정해줘야 했다는 게 키 포인트
BeanFactory (인터페이스)
| |
XXXApplicationContext XXXBeanFactory
|
AnnotationConfigApplicationContext
GenericXmlApplicationContext
XXXWebApplicationContext (web이 있는 것은 웹어플리케이션 개발용 IoC Container임)
BeanFactory : 기본 Spring Container
ApplicationContext : 기본 기능 + enterprise 환경에서 필요한 전용 기능이 추가된 컨테이너 (웹개발 가능. I18N (국제화 InternationalizatioN), AOP 기능,...)
A 클래스 B를 사용하면 A와 B 간에 의존성이 생김
A 클래스가 B를 참조하기 위해서 외부에서 A 클래스의 생성자에 B 객체를 생성해서 설정하는 작업을 의미
Spring 에서는 외부 역할을 IoC Container가 담당한다
소스코드 작성 ----> 컴파일 ----> 테스트파일 작성 (단위테스트) ---> 컴파일 ----> 패키징 (jar/war) ----> 배포
필요한 외부 jar 다운 + 빌드패스
소스코드 작성 --> 컴파일 --> 테스트파일 작성(단위테스트) --> 컴파일 --> 패키징(jar/war) --> 배포
필요한 외부 jar 다운 + 빌드패스
<----------------------------------------------------------------------------------------->
빌드툴이 거의 자동화해줌
pom.xml에 필요로 하는 jar 파일은 < dependency > 로 설정하면 자동으로 다운로드 되고 build path까지 해줌
http://mvnrepository.com에서 dependency 정보 얻을 수 있음
=> 명시적으로 빌드 툴을 선택해야됨
=> STS 4 버전 pom.xml 변경하기
변경 전: https://maven.apache.org/xsd/maven-4.0.0.xsd
변경 후: http://maven.apache.org/xsd/maven-4.0.0.xsd
=> JDK 11, Spring Boot 2.7.18
(Configuration 작업)
1) XML 이용
2) 어노테이션 + 약간의 XML
3) 어노테이션 <== Java Configuration이라고 부름
4) boot (1, 2, 3 기반 가능. 어노테이션 기반이 기본)
=> src/main/resources의 application.properties 이용해서 전반적인 환경설정을 설정함