Spring 과 SpringBoot 의 차이

10897 단어 SpringSpringBoot구별
본 튜 토리 얼 에서 우 리 는 표준 Spring 프레임 워 크 와 Spring Boot 간 의 차 이 를 연구 할 것 이다.
MVC 와 Security 같은 Spring 모듈 은 핵심 Spring 에서 사용 할 때 와 Boot 에서 사용 할 때의 차이 점 에 중점 을 두 고 토론 할 것 입 니 다.
Spring 이 뭐 예요?
쉽게 말 하면 Spring 프레임 워 크 는 자바 애플 리 케 이 션 개발 에 전면적 인 인 인 프 라 지원 을 제공 했다.
그것 은 주입 에 의존 하고 기 존의 모듈,예 를 들 어:
  • Spring JDBC
  • Spring MVC
  • Spring Security
  • Spring AOP
  • Spring ORM
  • Spring Test
  • 이 모듈 들 은 응용 프로그램의 개발 시간 을 크게 단축 시 킬 수 있다.
    예 를 들 어 자바 웹 개발 초기 에 우 리 는 대량의 모델 코드 를 작성 하여 기록 을 데이터 원본 에 삽입 해 야 했다.springjdbc 모듈 의 JDBCtemplate 를 사용 하면 몇 줄 코드 로 간략화 할 수 있 습 니 다.
    Spring Boot 가 뭐 예요?
    Spring Boot 는 기본적으로 Spring 프레임 워 크 의 확장 으로 Spring 프로그램 설정 에 필요 한 모델 설정 을 제거 합 니 다.
    이 는 Spring 플랫폼 에 대해 자신의 의견 을 고집 하 며 더욱 빠 르 고 효율 적 인 생태 시스템 개발 을 위해 길 을 닦 았 다.
    다음은 Spring Boot 의 일부 기능 입 니 다.
  • 설정 보다 좋 은'starter'의존 관 계 를 가지 고 구축 과 응용 프로그램 설정 을 간소화 합 니 다
  • 내장 형 서버 는 응용 프로그램 배치 의 복잡성 을 피 했다
  • 도량,운행 상황 검사 와 외부 화 설정
  • 자동 설정-가능하면
  • 우리 로 하여 금 이 두 틀 을 점차 익히 게 하 다.
    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 모듈 에 많은 시작 프로그램 의존 항목 을 제공 합 니 다.가장 많이 사용 하 는 방법 은:
  • spring-boot-starter-data-jpa
  • spring-boot-starter-security
  • spring-boot-starter-test
  • spring-boot-starter-web
  • spring-boot-starter-thymeleaf
  • starters 의 전체 목록 을 얻 으 려 면 Spring 문 서 를 볼 수 있 습 니 다:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-starter
    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 보다 좋 은 장점 은 다음 과 같다.
  • 내장 용기 지원
  • 명령 자바-jar 를 사용 하여 jar 를 독립 적 으로 실행 하도록 설정
  • 의존 항목 을 제거 하 는 옵션 으로 외부 용기 에 배치 할 때 잠재 적 인 jar 충돌 이 발생 하지 않도록 합 니 다
  • 배치 할 때 활성 프로필 을 지정 하 는 옵션
  • 통합 테스트 의 랜 덤 포트 생 성
  • 결론.
    본 논문 에서 우 리 는 Spring 과 Spring Boot 간 의 차 이 를 이해 했다.
    쉽게 말 하면 spring boot 는 Spring 자체 의 확장 일 뿐 개발,테스트 와 배 치 를 더욱 편리 하 게 한다 고 할 수 있다.
    이상 은 Spring 과 SpringBoot 간 의 차이 에 대한 상세 한 내용 입 니 다.Spring 과 SpringBoot 의 차이 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!

    좋은 웹페이지 즐겨찾기