11월부터 다시 공부를 해서 12월 안에 취업하기라는 목표를 가지고 하나하나 공부를 하기로 했다.
먼저, 스프링부트를 먼저 공부를 하자고 목표를 세웠다!
그전에 '스프링이랑 스프링부트가 뭐가 다른 거야?'부터 하나하나 공부를 해보도록 하자
1. 스프링 스프링부트 뭐가 다른 거야?
먼저 사용해 봤던 스프링을 먼저 알아보고 스프링부트를 정리하여 차이점에 대해서 알아보자!
1-1 스프링 🌻
스프링을 처음 배울 때부터 스프링이랑 스프링부트가 있다는 것을 듣고 '뭐가 다른 거야?'라는 생각에 이것저것 찾아보다가 스프링이라고 붙인 이유는 ' 개발자들의 겨울은 끝났다 봄이 온다! '라고 한다.
(혼자 이거 듣고 개발자들 너무 귀여운 거 아니야...라는 생각...)
하지만 스프링은 너무 길고 설정이 복잡하고, 모든 Dependecy 버전까지 정확하게 기재해야 했다.
1-2. 스프링보다 더 따뜻한 봄인 스프링 부트 🌻🌼🌷🌹
위에 적었던 내용과 같이 스프링에 대한 단점을 보완하고자 스프링부트를 출시했다.
스프링보다 더 짧고 버전관리도 권장 버전으로 자동 설정이 가능해졌다.
또한 스프링에서는 WAS(웹 애플리케이션을 실행하기 위한 장치)를 따로 설정해야 했지만, 스프링부트는 내장 WAS가 있어 따로 설정할 필요가 없어 더욱 간단하다. 찾아보니 가장 큰 장점은 내장 서블릿 컨테이너 덕분에 jar파일을 간단하게 배포 가능하다고 한다. (오! 이건 실습해 보면서 빨리 느껴보고 싶다! 🤔)
표로 간단하게 정리하자면 아래와 같다.
1. 간편한 설정 |
2. 편리한 의존선관리 & 자동권장버전 관리 |
3. 내장 서버로 인한 간단한 배포 서버 구축 |
4. 스프링 Security, Data JPA등의 다른 스프링 프레임 워크 요소를 쉽게 사용 |
2. 스프링 주요 개념 정리
2-1 제어의 역전과 의존성 주입
수업시간에도 스프링 수업 들어갔을때 엄청 들었던 제어의 역전과 의존성 주입에 대해서 다시 공부를 해보았다.
제어의역전은 (IoC) 의존성주입(DI)라고 줄여서 부르겠다.
① 제어의 역전(IoC)
객체를 생성할때 객체가 필요한 곳에 아래 예제코드처럼 직접 생성했다.
public class A {
b = new B();
}
🔎 A클래스에서 new 키워드로 클래스 B의 객체 생성
IoC은 다른 개체를 직접 생성하거나 제어하는것이 아닌 외부에서 관리하는 객체를 가져와 사용하는 것을 말한다.
실제로 스프링은 스프링 컨테이너가 객체를 관리, 제공하는 역할을 한다.
public class A {
private B b;
}
🔎 코드에서 객체를 생성하지 않고 어디선가 받아온 객체를 b에 할당
프로그램을 구동하는데 필요한 객체에 대한 생성, 변경 등의 관리를 프로그램을 개발하는 사람이 아닌
프로그램을 구동하는 컨테이너에서 직접 관리하는 것
-> 이때 생성된 객체 == Bean
② 의존성주입(DI)
스프링에서 객체를 관리하기 위해서는 IoC를 사용한다. 그리고 IoC 를 구현하기 위해 사용하는 방법은 DI이다.
DI는 어떤 클래스가 다른 클래스에 의존한다는 뜻으로 사용하는 객체를 직접 생성하여 만드는 것이 아니라
컨테이너가 빈의 설정 정보를 읽어와 자동으로 해당 객체에 연결하는 것이다.
public class A {
@Autowired
B b;
}
🔎 A에서 B를 주입받음
이렇게 코드를 작성해도 프로그램은 잘 작동한다 그 이유는 스프링컨테이너라는 곳에서 객체를 주입했기 때문이다.
즉, 컨테이너가 B객체를 만들어 클래스 A에 준거라고 생각하면 된다.
오? 그럼 빈과 컨테이너는 뭘까 ? 🤔
💬 스프링 컨테이너란 ?
빈을 생성하고 관리하는 것으로 빈이 생성되고 소멸되기까지 생명주기를 컨테이너에서 관리하는 것으로
@Autowired같은 어노테이션을 사용해 빈을 주입받을 수 있게 DI를 지원하기도 한다.
💬 빈이란 ?
스프링 컨테이너가 생성하고 관리하는 객체로 빈을 컨테이너에 등록하기 위해 XML파일설정, 어노테이션등 다양한 방법으로 등록한다.
2-2 관점 지향 프로그래밍
스프링에서 AOP라는 관점지향프로그래밍이라는 중요한 개념이 있다.
관점지향프로그래밍은 프로그래밍에 대한 관심을 핵심관점 부가 관점으로 나누어서
관심 기준으로 모듈화하는 것을 의미한다.
다음 시간에는 직접 스프링부트 프로젝트를 직접 실행해보았다.
저와 같이 공부해요! 궁금하신분들은 아래 포스팅으로 와주세요 👀
[Spring Boot] 스프링 부트 프로젝트 쉽게 생성하기 ①
수료를 하고 엄마가 아파서 병간호를 하다 보니 10월이 얼레벌레 가버렸다. 11월이 되었고 나의 시간이 생겼으니 수료한 내용 정리 및 혼자 공부하는 시간을 가지기로 했다. 일단 11월둘째주까지
jnaa.tistory.com
💻💭도움받은 내용
스프링 부트 시작할 때 알아야 하는 것 | 요즘IT
스프링은 장점이 많은 개발 도구이지만 설정이 매우 복잡하다는 단점이 있습니다. 그래서 스프링을 개발팀에서도 이런 단점을 인식하고 단점을 보완하고자 스프링 부트를 출시했습니다. 스프
yozm.wishket.com
'ON > 실습' 카테고리의 다른 글
[Spring Boot] 스프링 부트 프로젝트 생성 | cmd 창으로 빌드 및 실행 ② (0) | 2023.11.03 |
---|---|
[Spring Boot] 스프링 부트 프로젝트 쉽게 생성하기 ① (0) | 2023.11.02 |
[ 오류 ] Could not set parameters for mapping 부적합한 열 유형 해결하기 (0) | 2023.08.24 |
[ 오류 ] Origin 서버가 대상 리소스를 위한 현재의 representation을 찾지 못했거나, 그것이 존재하는지를 밝히려 하지 않습니다. (0) | 2023.08.22 |
[Eclipse] Dynamic Web Project 생성 및 JSP 페이지 연결방법 초기 세팅 ② (0) | 2023.08.10 |
11월부터 다시 공부를 해서 12월 안에 취업하기라는 목표를 가지고 하나하나 공부를 하기로 했다.
먼저, 스프링부트를 먼저 공부를 하자고 목표를 세웠다!
그전에 '스프링이랑 스프링부트가 뭐가 다른 거야?'부터 하나하나 공부를 해보도록 하자
1. 스프링 스프링부트 뭐가 다른 거야?
먼저 사용해 봤던 스프링을 먼저 알아보고 스프링부트를 정리하여 차이점에 대해서 알아보자!
1-1 스프링 🌻
스프링을 처음 배울 때부터 스프링이랑 스프링부트가 있다는 것을 듣고 '뭐가 다른 거야?'라는 생각에 이것저것 찾아보다가 스프링이라고 붙인 이유는 ' 개발자들의 겨울은 끝났다 봄이 온다! '라고 한다.
(혼자 이거 듣고 개발자들 너무 귀여운 거 아니야...라는 생각...)
하지만 스프링은 너무 길고 설정이 복잡하고, 모든 Dependecy 버전까지 정확하게 기재해야 했다.
1-2. 스프링보다 더 따뜻한 봄인 스프링 부트 🌻🌼🌷🌹
위에 적었던 내용과 같이 스프링에 대한 단점을 보완하고자 스프링부트를 출시했다.
스프링보다 더 짧고 버전관리도 권장 버전으로 자동 설정이 가능해졌다.
또한 스프링에서는 WAS(웹 애플리케이션을 실행하기 위한 장치)를 따로 설정해야 했지만, 스프링부트는 내장 WAS가 있어 따로 설정할 필요가 없어 더욱 간단하다. 찾아보니 가장 큰 장점은 내장 서블릿 컨테이너 덕분에 jar파일을 간단하게 배포 가능하다고 한다. (오! 이건 실습해 보면서 빨리 느껴보고 싶다! 🤔)
표로 간단하게 정리하자면 아래와 같다.
1. 간편한 설정 |
2. 편리한 의존선관리 & 자동권장버전 관리 |
3. 내장 서버로 인한 간단한 배포 서버 구축 |
4. 스프링 Security, Data JPA등의 다른 스프링 프레임 워크 요소를 쉽게 사용 |
2. 스프링 주요 개념 정리
2-1 제어의 역전과 의존성 주입
수업시간에도 스프링 수업 들어갔을때 엄청 들었던 제어의 역전과 의존성 주입에 대해서 다시 공부를 해보았다.
제어의역전은 (IoC) 의존성주입(DI)라고 줄여서 부르겠다.
① 제어의 역전(IoC)
객체를 생성할때 객체가 필요한 곳에 아래 예제코드처럼 직접 생성했다.
public class A {
b = new B();
}
🔎 A클래스에서 new 키워드로 클래스 B의 객체 생성
IoC은 다른 개체를 직접 생성하거나 제어하는것이 아닌 외부에서 관리하는 객체를 가져와 사용하는 것을 말한다.
실제로 스프링은 스프링 컨테이너가 객체를 관리, 제공하는 역할을 한다.
public class A {
private B b;
}
🔎 코드에서 객체를 생성하지 않고 어디선가 받아온 객체를 b에 할당
프로그램을 구동하는데 필요한 객체에 대한 생성, 변경 등의 관리를 프로그램을 개발하는 사람이 아닌
프로그램을 구동하는 컨테이너에서 직접 관리하는 것
-> 이때 생성된 객체 == Bean
② 의존성주입(DI)
스프링에서 객체를 관리하기 위해서는 IoC를 사용한다. 그리고 IoC 를 구현하기 위해 사용하는 방법은 DI이다.
DI는 어떤 클래스가 다른 클래스에 의존한다는 뜻으로 사용하는 객체를 직접 생성하여 만드는 것이 아니라
컨테이너가 빈의 설정 정보를 읽어와 자동으로 해당 객체에 연결하는 것이다.
public class A {
@Autowired
B b;
}
🔎 A에서 B를 주입받음
이렇게 코드를 작성해도 프로그램은 잘 작동한다 그 이유는 스프링컨테이너라는 곳에서 객체를 주입했기 때문이다.
즉, 컨테이너가 B객체를 만들어 클래스 A에 준거라고 생각하면 된다.
오? 그럼 빈과 컨테이너는 뭘까 ? 🤔
💬 스프링 컨테이너란 ?
빈을 생성하고 관리하는 것으로 빈이 생성되고 소멸되기까지 생명주기를 컨테이너에서 관리하는 것으로
@Autowired같은 어노테이션을 사용해 빈을 주입받을 수 있게 DI를 지원하기도 한다.
💬 빈이란 ?
스프링 컨테이너가 생성하고 관리하는 객체로 빈을 컨테이너에 등록하기 위해 XML파일설정, 어노테이션등 다양한 방법으로 등록한다.
2-2 관점 지향 프로그래밍
스프링에서 AOP라는 관점지향프로그래밍이라는 중요한 개념이 있다.
관점지향프로그래밍은 프로그래밍에 대한 관심을 핵심관점 부가 관점으로 나누어서
관심 기준으로 모듈화하는 것을 의미한다.
다음 시간에는 직접 스프링부트 프로젝트를 직접 실행해보았다.
저와 같이 공부해요! 궁금하신분들은 아래 포스팅으로 와주세요 👀
[Spring Boot] 스프링 부트 프로젝트 쉽게 생성하기 ①
수료를 하고 엄마가 아파서 병간호를 하다 보니 10월이 얼레벌레 가버렸다. 11월이 되었고 나의 시간이 생겼으니 수료한 내용 정리 및 혼자 공부하는 시간을 가지기로 했다. 일단 11월둘째주까지
jnaa.tistory.com
💻💭도움받은 내용
스프링 부트 시작할 때 알아야 하는 것 | 요즘IT
스프링은 장점이 많은 개발 도구이지만 설정이 매우 복잡하다는 단점이 있습니다. 그래서 스프링을 개발팀에서도 이런 단점을 인식하고 단점을 보완하고자 스프링 부트를 출시했습니다. 스프
yozm.wishket.com
'ON > 실습' 카테고리의 다른 글
[Spring Boot] 스프링 부트 프로젝트 생성 | cmd 창으로 빌드 및 실행 ② (0) | 2023.11.03 |
---|---|
[Spring Boot] 스프링 부트 프로젝트 쉽게 생성하기 ① (0) | 2023.11.02 |
[ 오류 ] Could not set parameters for mapping 부적합한 열 유형 해결하기 (0) | 2023.08.24 |
[ 오류 ] Origin 서버가 대상 리소스를 위한 현재의 representation을 찾지 못했거나, 그것이 존재하는지를 밝히려 하지 않습니다. (0) | 2023.08.22 |
[Eclipse] Dynamic Web Project 생성 및 JSP 페이지 연결방법 초기 세팅 ② (0) | 2023.08.10 |