가장먼저, SPRING과 SPRING BOOT의 차이를 알고 가자 .
스프링(Spring)은 프레임워크이며, 스프링 부트(Spring Boot)는 스프링 프레임워크를 기반으로 한 도구입니다. 스프링은 설정 파일을 작성해야 하지만, 스프링 부트는 자동 설정을 제공하여 간편하게 개발할 수 있습니다. 또한, 스프링 부트는 내장 서버를 제공하여 쉽게 웹 애플리케이션을 실행할 수 있습니다. Spring은 스프링 프레임워크를 보다 세밀하게 제어하고자 하는 경우에, Spring Boot는 빠르고 간단하게 스프링 애플리케이션을 개발하고자 하는 경우에 사용됩니다.
-SPRING 사이트 참고.
사실 BOOT를 기본적으로 사용해왔기 때문에, 추가적인 개념을 공부하는 위주로 공부에 임하자.
++전자정부 프레임워크가 스프링 기반임을 꺠달았다.
자바->스프링->스프링부트 모두를 사용해 개발을 진행해보고 .
어떤것이 실제로 도움이 되었는지를 확인해보겠다.
OOP란? 객체지향 프로그래밍이다.
다시한번 정리하자면, 소프트웨어를 기능 논리보다는 데이터나 객체로 설계하는 구조이다 .
절차지향 프로그래밍은 하고싶은 기능을 나열해서 이를 구현한다.
OOP는 확실히, 구현과 반복에 좋다.
Spring을 왜 썼을까? - java를 안전하고 다양한 프로그램을 지원하기 위하여 노력한다.
spring boot를 사용하다보면, 연결과 이런것들이 굉장히 자동적이기 때문에 개념이 살짝 약해도 충분히 코딩이 가능하다. 그러나 , 앞으로 어떤 상황에 놓일지 모르기 떄문에 사용해보겠다 .
IOC->개념의 흐름을 변경한다. 원래는 server라는 것이 받아오고,valid하고, 다시 return까지 .
즉 validate등이 변경되면 ,즉시 server에 영향이 온다.
server가 , request만 아니라 dao 또한 매개변수로 받고 이러한 기능들을 method화하지 않는다.
(dao에 되어있따.) 이는 즉, dao가 마음대로 기능을 변경할수 있다는 의미이다.
이렇게 직접 넣어서 사용하는 것이 ioc라고 했었는데, 그 이유가 이거였따.
라이브러리? 내가 직접 호출하는 Assertions같은것.
Dmakeservice. 를 @Autowired로 직접 주입해주었다. (이것이 스프링 방식이었다)
Resource -> 자원을 제공(boot와 일반 스프링과 개념자체는 같은 개념이다)
validation,databinding이런것들은 spring boot를 사용함과 같은 개념이다.
SPEL또한 동일하다.
@VALUE("${VALUE.FROM.FILE}"). 동일하다. 이를 SPRING이 해석하고 접근하여 문자열로 받아온다
AOP 재재재 복습 ->
@Transactional -> update method가 , return service.score로 획득한다고 본다.
transactional 어노테이션이 자동으로 지원한다.
transactional이 aop를 활용하여 커밋의 부분, 제거의 부분 등의 기분에 따라서 join point에 맞추어 사용함을 다시한번 상기하자 .
개인적인 실습 이후에는, java에 비해 spring은 의존성 주입이 조금더 편리하게 변경되었다.
그 이후에는 spring boot에서, 이것보다 더 편하게 변경되었다.
package com.example;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
// applicationContext.xml에서 ApplicationContext 생성
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// MyService 빈을 가져와서 사용
MyService myService = (MyService) context.getBean("myService");
myService.displayMessage();
}
}
-spring에서, 직접 application context를 지정하고, 각 빈 , 컴포넌트 들을 연결해주고 해야하는 번거로운 예시이다.
package com.example; public class MyService { private String message; public MyService(String message) { this.message = message; } public void displayMessage() { System.out.println("Message from MyService: " + message); } }
이것 또한 불편한 예시중 하나이다. 자세한 부분은 생략하지만, 스스로 이렇게 생성자를 주입해줘야하는 불편함이 존재한다. 그렇다고 해서 항상 spring boot를 사용할 수 있는것은 아니기 때문에, 이러한 방식에 대해서도 이해하고 있자.
spring boot는 내부 서버를 가지고 있어 쉽게 웹 어플리케이션을 작동시킬수 있다 .
spring에서는, build.gradle에서 의존성 등을 추가해줘야 한다.
굉장히 번거로운 작업들이기 때문에, spring boot의 사용 이유가 더 명확해졌다.
허나 기본적인 spring의 작동 구조는 알아야 겠으며, 이를 위해 이번 페이지를 작성했다.
'백엔드 > 스프링 부트세부 공부' 카테고리의 다른 글
Configuration으로 기타 설정 (0) | 2024.01.10 |
---|---|
Thymeleaf 상세부 (0) | 2024.01.08 |
기타 기능 2 , devtool, actuator (0) | 2024.01.05 |
추가 기술들 (2) | 2024.01.01 |
BOOT의 기능 (1) | 2023.12.30 |