Spring 과 SpringBoot 의 차이
10897 단어 SpringSpringBoot구별
MVC 와 Security 같은 Spring 모듈 은 핵심 Spring 에서 사용 할 때 와 Boot 에서 사용 할 때의 차이 점 에 중점 을 두 고 토론 할 것 입 니 다.
Spring 이 뭐 예요?
쉽게 말 하면 Spring 프레임 워 크 는 자바 애플 리 케 이 션 개발 에 전면적 인 인 인 프 라 지원 을 제공 했다.
그것 은 주입 에 의존 하고 기 존의 모듈,예 를 들 어:
예 를 들 어 자바 웹 개발 초기 에 우 리 는 대량의 모델 코드 를 작성 하여 기록 을 데이터 원본 에 삽입 해 야 했다.springjdbc 모듈 의 JDBCtemplate 를 사용 하면 몇 줄 코드 로 간략화 할 수 있 습 니 다.
Spring Boot 가 뭐 예요?
Spring Boot 는 기본적으로 Spring 프레임 워 크 의 확장 으로 Spring 프로그램 설정 에 필요 한 모델 설정 을 제거 합 니 다.
이 는 Spring 플랫폼 에 대해 자신의 의견 을 고집 하 며 더욱 빠 르 고 효율 적 인 생태 시스템 개발 을 위해 길 을 닦 았 다.
다음은 Spring Boot 의 일부 기능 입 니 다.
Maven 의존 항
우선,Spring 을 사용 하여 웹 프로그램 을 만 드 는 데 필요 한 최소 의존성 을 살 펴 보 자.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.5</version>
</dependency>
Spring 과 달리 Spring Boot 는 의존 항목 하나만 있 으 면 웹 프로그램 을 시작 하고 실행 할 수 있 습 니 다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.4.4</version>
</dependency>
구축 기간 에 모든 의존 항목 이 최종 압축 파일 에 자동 으로 추 가 됩 니 다.또 하나의 좋 은 예 는 테스트 라 이브 러 리 다.우 리 는 보통 Spring-Test,JUnit,Hamcrest,Mockito 라 이브 러 리 를 사용한다.Spring 프로젝트 에 서 는 의존 항목 으로 모든 라 이브 러 리 를 추가 해 야 합 니 다.
또는 springboot 에서 starter 의존 항목 만 있 으 면 이 라 이브 러 리 를 자동 으로 포함 할 수 있 습 니 다.
springboot 은 서로 다른 Spring 모듈 에 많은 시작 프로그램 의존 항목 을 제공 합 니 다.가장 많이 사용 하 는 방법 은:
MVC 설정
Spring 과 SpringBoot 를 사용 하여 jsp 웹 프로그램 을 만 드 는 데 필요 한 설정 을 연구 합 시다.
Spring 은 dispatcherservlet,맵 및 기타 지원 설정 을 정의 해 야 합 니 다.웹.xml 파일 이나 초기 값 으로 항목 클래스 를 설정 할 수 있 습 니 다.
public class MyWebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) {
AnnotationConfigWebApplicationContext context
= new AnnotationConfigWebApplicationContext();
context.setConfigLocation("com.baeldung");
container.addListener(new ContextLoaderListener(context));
ServletRegistration.Dynamic dispatcher = container
.addServlet("dispatcher", new DispatcherServlet(context));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
}
@EnableWebMvc 주석 을@Configuration 클래스 에 추가 하고 컨트롤 러 에서 돌아 오 는 보 기 를 해석 하기 위해 보기 해석 기 를 정의 해 야 합 니 다.
@EnableWebMvc
@Configuration
public class ClientWebConfig implements WebMvcConfigurer {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver bean
= new InternalResourceViewResolver();
bean.setViewClass(JstlView.class);
bean.setPrefix("/WEB-INF/view/");
bean.setSuffix(".jsp");
return bean;
}
}
이에 비해 웹 starter 를 추가 한 후 Spring Boot 는 몇 가지 속성 만 있 으 면 작업 할 수 있 습 니 다.
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
auto-configuration 이라는 process 를 통 해 bootwebstarter 를 추가 하면 위의 모든 Spring 설정 이 자동 으로 포 함 됩 니 다.이것 은 springboot 가 응용 프로그램 에 존재 하 는 의존 항목,속성,bean 을 보고 이 를 바탕 으로 설정 을 사용 한 다 는 것 을 의미 합 니 다.
물론 사용자 정의 설정 을 추가 하려 면 Spring-boot 자동 설정 이 종 료 됩 니 다.
템 플 릿 엔진 설정
이제 스프링 과 springboot 에 Thymeleaf 템 플 릿 엔진 을 설정 하 는 방법 을 배 워 봅 시다.
Spring 에 서 는 보기 해상도 기 에 thymeleaf-spring 5 의존 항목 과 설정 을 추가 해 야 합 니 다.
@Configuration
@EnableWebMvc
public class MvcWebConfig implements WebMvcConfigurer {
@Autowired
private ApplicationContext applicationContext;
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver =
new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(applicationContext);
templateResolver.setPrefix("/WEB-INF/views/");
templateResolver.setSuffix(".html");
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
templateEngine.setEnableSpringELCompiler(true);
return templateEngine;
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine());
registry.viewResolver(resolver);
}
}
SpringBoot 는 springbootstarter thymeleaf 의 의존성 만 있 으 면 웹 프로그램 에서 thymeleaf 지원 을 사용 할 수 있 습 니 다.Thymeleaf 3.0 의 새로운 기능 때문에,우 리 는 springboot2web 응용 프로그램 에 thymeleaf-layout-dialect 를 의존 항목 으로 추가 해 야 합 니 다.또는,우 리 는 springbootstarter 와 eleaf 의존 도 를 추가 할 수 있 습 니 다.이것 은 우리 에 게 모든 것 을 처리 해 줄 것 입 니 다.의존 항목 이 자리 에 있 으 면 src/main/resources/templates 폴 더 에 템 플 릿 을 추가 할 수 있 습 니 다.Spring 가 이 드 는 자동 으로 표 시 됩 니 다.
봄 보안 설정
간단하게 보기 위해 서 이 프레임 워 크 를 사용 하여 기본 HTTP 기본 인증 을 사용 하 는 방법 을 볼 수 있 습 니 다.
Spring 을 사용 하여 보안 을 사용 하 는 데 필요 한 의존 항목 과 설정 을 살 펴 보 겠 습 니 다.
Spring 은 프로그램의 안전성 을 설정 하기 위해 표준 springsecurity web 과 springsecurity config 의존 항목 이 필요 합 니 다.
다음은 웹 보안 ConfigureAdapter 를 확장 하고@EnableWebSecurity 주석 을 사용 할 클래스 를 추가 해 야 합 니 다.
@Configuration
@EnableWebSecurity
public class CustomWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user1")
.password(passwordEncoder()
.encode("user1Pass"))
.authorities("ROLE_USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.httpBasic();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
인증 을 설정 하기 위해 inMemory Authentication 을 사용 합 니 다.springboot 은 이러한 의존 항목 이 있어 야 작업 할 수 있 습 니 다.그러나 spring-boot-starter-security 의 의존 항목 만 정의 해 야 합 니 다.이 는 모든 의존 항목 을 classpath 류 경로 에 자동 으로 추가 하기 때 문 입 니 다.
springboot 의 security 보안 설정 은 위 와 같 습 니 다.
Spring 과 Spring 안내 에서 JPA 설정 을 어떻게 실현 하 는 지 알 고 싶 으 면,우리 의 글 A Guide To JPA with Spring:https://www.baeldung.com/the-persistence-layer-with-spring-and-jpa을 볼 수 있 습 니 다.
Application Bootstrap
Spring 과 Spring 가이드 에서 프로그램 을 유도 하 는 기본 적 인 차 이 는 servlet 에 있다.Spring 은 웹.xml 또는 SpringServletContainer Initializer 를 안내 입구 로 사용 합 니 다.
한편,SpringBoot 는 Servlet 3 기능 만 사용 하여 프로그램 을 유도 합 니 다.우리 자세히 이야기 합 시다.
Spring 은 어떻게 인도 합 니까?
Spring 은 전통 적 인 웹.xml 안내 방식 과 최신 Servlet 3+방법 을 지원 합 니 다.
웹.xml 단계별 접근 을 보 여 줍 니 다.
1.Servlet 용기(서버)웹.xml 읽 기.
2.Dispatcher Servlet 정 의 는 웹.xml 에서 용기 로 예화 합 니 다.
3.DispatcherServlet 는 WEB-INF/{servletName}을 읽 어 웹 응용 프로그램 Context-servlet.xml 을 만 듭 니 다.
4.마지막 으로 Dispatcher Servlet 는 응용 프로그램 컨 텍스트 에 정 의 된 bean 에 등록 합 니 다.
다음은 어떻게 Servlet 3+방법 으로 Spring 안 내 를 진행 합 니까?
1.용기 검색 은 ServletContainer Initializer 의 클래스 를 실행 합 니 다.
2.SpringServletContainer Initializer 는 웹 애플 리 케 이 션 Initializer 를 실현 하 는 모든 종 류 를 찾 습 니 다.
3.WebapplicationInitializer 는 XML 또는@Configuration 류 를 사용 하여 컨 텍스트 를 만 듭 니 다.
4.WebapplicationInitializer 는 이전에 만 든 컨 텍스트 를 사용 하여 Dispatcher Servlet 을 만 듭 니 다.
어떻게 스프링 부 트 를 시작 합 니까?
Spring Boot 응용 프로그램의 입구 점 은@SpringBootApplication 주석 을 사용 하 는 클래스 입 니 다.
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
기본 적 인 상황 에서 springboot 은 내장 형 용 기 를 사용 하여 프로그램 을 실행 합 니 다.이 예 에서 springboot 는 Public static void 메 인 입구 점 을 사용 하여 내장 웹 서버 를 시작 합 니 다.또한 Servlet,Filter,servlet ContextInitializerbean 을 응용 프로그램의 상하 문 에서 삽입 식 Servlet 용기 로 연결 하 는 일 도 맡 는 다.
springboot 의 또 다른 특성 은 주 클래스 의 같은 가방 이나 하위 패키지 의 모든 종류의 구성 요 소 를 자동 으로 검색 하 는 것 입 니 다.
또한,springboot 는 외부 용기 에 설 치 된 웹 압축 파일 에 배치 하 는 옵션 도 제공 합 니 다.이러한 상황 에서 우 리 는 SpringBoot ServletInitializer 를 확장 해 야 합 니 다.
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
// ...
}
여기 서 외부 servlet 용 기 는 웹 에 저 장 된 META-INF 파일 에서 정 의 된 주 종 류 를 찾 습 니 다.SpringBootServletInitializer 는 servlet,필터,ServletContextInitializer 를 연결 합 니 다.포장 및 배치
마지막 으로 응용 프로그램 을 어떻게 포장 하고 배치 하 는 지 보 여 줍 니 다.이 두 프레임 워 크 는 모두 Maven 과 Gradle 등 흔히 볼 수 있 는 가방 관리 기술 을 지원 한다.그러나 배치 에 있어 서 는 이런 틀 이 크게 다르다.
예 를 들 어 springboot maven 플러그 인 은 Maven 에서 springboot 지원 을 제공 합 니 다.jar 나 war 를 실행 할 수 있 도록 포장 하고 프로그램 을'현지에서'실행 할 수 있 습 니 다.
배치 환경 에서 Spring Boot 가 Spring 보다 좋 은 장점 은 다음 과 같다.
본 논문 에서 우 리 는 Spring 과 Spring Boot 간 의 차 이 를 이해 했다.
쉽게 말 하면 spring boot 는 Spring 자체 의 확장 일 뿐 개발,테스트 와 배 치 를 더욱 편리 하 게 한다 고 할 수 있다.
이상 은 Spring 과 SpringBoot 간 의 차이 에 대한 상세 한 내용 입 니 다.Spring 과 SpringBoot 의 차이 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.