91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring和SpringBoo有什么區別

發布時間:2020-06-22 16:53:18 來源:億速云 閱讀:275 作者:清晨 欄目:開發技術

這篇文章將為大家詳細講解有關Spring和SpringBoo有什么區別,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1、概述:

對于 Spring 和 SpringBoot 到底有什么區別,我聽到了很多答案,剛開始邁入學習 SpringBoot 的我當時也是一頭霧水,隨著經驗的積累、我慢慢理解了這兩個框架到底有什么區別,我相信對于用了 SpringBoot 很久的開發人員來說,有絕大部分還不是很理解 SpringBoot 到底和 Spring 有什么區別,看完文章中的比較,或許你有了不同的答案和看法!

2、什么是Spring呢?

先來聊一聊 Spring 作為 Java 開發人員,大家都 Spring 可不陌生,簡而言之, Spring 框架為開發 Java 應用程序提供了全面的基礎架構支持。它包含一些很好的功能,如依賴注入和開箱即用的模塊,如:

Spring JDBC 、Spring MVC 、Spring Security、 Spring AOP 、Spring ORM 、Spring Test 

這些模塊大家應該都用過吧,這些模塊縮短應用程序的開發時間,提高了應用開發的效率

例如,在 Java Web 開發的早期階段,我們需要編寫大量的代碼來將記錄插入到數據源中。但是通過使用 Spring JDBC 模塊的 JDBCTemplate ,我們可以將這操作簡化為只需配置幾行代碼。

3、什么是Spring Boot呢?

Spring Boot 基本上是 Spring 框架的擴展,它消除了設置 Spring 應用程序所需的 XML配置,為更快,更高效的開發生態系統鋪平了道路。

以下是 Spring Boot 中的一些特點:

1:創建獨立的 spring 應用。

2:嵌入 Tomcat , Jetty Undertow 而且不需要部署他們。

3:提供的“starters” poms來簡化 Maven 配置

4:盡可能自動配置 spring 應用。

5:提供生產指標,健壯檢查和外部化配置

6:絕對沒有代碼生成和 XML 配置要求

4、讓我們逐步熟悉這兩個框架

4.1、 Maven依賴

首先,讓我們看一下使用Spring創建Web應用程序所需的最小依賴項 

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-web</artifactId> 
    <version>5.1.0.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-webmvc</artifactId> 
    <version>5.1.0.RELEASE</version> 
</dependency> 

與Spring不同,Spring Boot只需要一個依賴項來啟動和運行Web應用程序: 

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
    <version>2.0.6.RELEASE</version> 
</dependency> 

在進行構建期間,所有其他依賴項將自動添加到項目中。

另一個很好的例子就是測試庫。我們通常使用 Spring Test , JUnit , Hamcrest 和 Mockito 庫。在 Spring 項目中,我們應該將所有這些庫添加為依賴項。但是在 Spring Boot中 ,我們只需要添加 spring-boot-starter-test 依賴項來自動包含這些庫。

Spring Boot為不同的Spring模塊提供了許多依賴項。一些最常用的是:

spring-boot-starter-data-jpa
spring-boot-starter-security
spring-boot-starter-test
spring-boot-starter-web
spring-boot-starter-thymeleaf

4.2、MVC配置

讓我們來看一下 Spring 和 Spring Boot 創建 JSP Web 應用程序所需的配置。

Spring 需要定義調度程序 servlet ,映射和其他支持配置。我們可以使用 web.xml 文件或 Initializer 類來完成此操作: 

public class MyWebAppInitializer implements WebApplicationInitializer { 
   
    @Override 
    public void onStartup(ServletContext container) { 
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); 
        context.setConfigLocation("com.pingfangushi"); 
          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; 
   } 
} 

和上述操作一比,一旦我們添加了 Web 啟動程序, Spring Boot 只需要在 application 配置文件中配置幾個屬性來完成如上操作: 

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

上面的所有Spring配置都是通過一個名為auto-configuration的過程添加 Boot web starter 來自動包含的。

這意味著 Spring Boot 將查看應用程序中存在的依賴項,屬性和 bean ,并根據這些依賴項,對屬性和 bean 進行配置。當然,如果我們想要添加自己的自定義配置,那么 Spring Boot 自動配置將會退回。

4.3、配置模板引擎

現在我們來看下如何在Spring和Spring Boot中配置Thymeleaf模板引擎。

在 Spring 中,我們需要為視圖解析器添加 thymeleaf-spring5 依賴項和一些配置: 

@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); 
    } 
} 

SpringBoot1X 只需要 spring-boot-starter-thymeleaf 的依賴 項 來啟用 Web 應用程序中的        Thymeleaf 支持。但是由于 Thymeleaf3.0 中的新功能, 我們必須將 thymeleaf-layout-dialect 添加 為 SpringBoot2X Web應用程序中的依賴項。一旦依賴關系到位,我們就可以將模板添加到 src/main/resources/templates 文件夾中, SpringBoot 將自動顯示它們。

4.4、Spring Security 配置

為簡單起見,我們使用框架默認的 HTTP Basic 身份驗證。讓我們首先看一下使用 Spring 啟用Security 所需的依賴關系和配置。

Spring 首先需要依賴 spring-security-web 和 spring-security-config 模塊。接下來, 我們需要添加一個擴展 WebSecurityConfigurerAdapter 的類,并使用 @EnableWebSecurity 注解: 

@Configuration 
@EnableWebSecurity 
public class CustomWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { 
   
    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
        auth.inMemoryAuthentication() 
          .withUser("admin") 
            .password(passwordEncoder() 
            .encode("password")) 
          .authorities("ROLE_ADMIN"); 
    } 
   
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
        http.authorizeRequests() 
          .anyRequest().authenticated() 
          .and() 
          .httpBasic(); 
    } 
      
    @Bean 
    public PasswordEncoder passwordEncoder() { 
        return new BCryptPasswordEncoder(); 
    } 
} 

這里我們使用 inMemoryAuthentication 來設置身份驗證。同樣, Spring Boot 也需要這些依賴項才能使其工作。但是我們只需要定義 spring-boot-starter-security 的依賴關系,因為這會自動將所有相關的依賴項添加到類路徑中。

Spring Boot 中的安全配置與上面的相同。

5、應用程序引導配置

Spring 和 Spring Boot 中應用程序引導的基本區別在于 servlet 。

Spring 使用 web.xml 或 SpringServletContainerInitializer 作為其引導入口點。

Spring Boot 僅使用 Servlet 3 功能來引導應用程序,下面讓我們詳細來了解下

5.1、Spring 是怎樣引導配置的呢?

Spring 支持傳統的 web.xml 引導方式以及最新的 Servlet 3+ 方法。

讓我們看一下 web.xml 方法的步驟:

Servlet 容器(服務器)讀取 web.xml 

web.xml 中定義的 DispatcherServlet 由容器實例化

DispatcherServlet 通過讀取 WEB-INF / {servletName} -servlet.xml 來創建 WebApplicationContext 

最后, DispatcherServlet 注冊在應用程序上下文中定義的 bean

以下是使用 Servlet 3+ 方法的 Spring 引導:

容器搜索實現 ServletContainerInitializer 的類并執行

SpringServletContainerInitializer 找到實現所有類 WebApplicationInitializer 

WebApplicationInitializer 創建具有XML或上下文 @Configuration 類

WebApplicationInitializer 創建 DispatcherServlet 的 與先前創建的上下文。

5.2、SpringBoot 有是如何配置的呢?

Spring Boot應用程序的入口點是使用@SpringBootApplication注釋的類: 

@SpringBootApplication 
public class Application { 
    public static void main(String[] args) { 
        SpringApplication.run(Application.class, args); 
    } 
} 

默認情況下, Spring Boot 使用嵌入式容器來運行應用程序。在這種情況下, Spring Boot 使用 public static void main 入口點來啟動嵌入式 Web 服務器。此外,它還負責將 Servlet ,Filter 和 ServletContextInitializer bean 從應用程序上下文綁定到嵌入式 servlet 容器。

Spring Boot 的另一個特性是它會自動掃描同一個包中的所有類或 Main 類的子包中的組件。

Spring Boot 提供了將其部署到外部容器的方式。在這種情況下,我們必須擴展 SpringBootServletInitializer : 

/** 
* War部署 
* 
* @author SanLi 
* Created by 2689170096@qq.com on 2018/4/15 
*/ 
public class ServletInitializer extends SpringBootServletInitializer { 
 
  @Override 
  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
      return application.sources(Application.class); 
  } 
 
  @Override 
  public void onStartup(ServletContext servletContext) throws ServletException { 
      super.onStartup(servletContext); 
      servletContext.addListener(new HttpSessionEventPublisher()); 
  } 
} 

這里外部 servlet 容器查找在war包下的 META-INF 文件夾下MANIFEST.MF文件中定義的 Main-class , SpringBootServletInitializer 將負責綁定 Servlet , Filter 和 ServletContextInitializer 。

6、打包和部署

最后,讓我們看看如何打包和部署應用程序。這兩個框架都支持 Maven 和 Gradle 等通用包管理技術。但是在部署方面,這些框架差異很大。例如,Spring Boot Maven插件在 Maven 中提供Spring Boot 支持。它還允許打&#8203;&#8203;包可執行 jar 或 war 包并 就地 運行應用程序。

在部署環境中 Spring Boot 對比 Spring 的一些優點包括:

  • 提供嵌入式容器支持
  • 使用命令 java -jar 獨立運行jar
  • 在外部容器中部署時,可以選擇排除依賴關系以避免潛在的jar沖突
  • 部署時靈活指定配置文件的選項
  • 用于集成測試的隨機端口生成

7、結論

簡而言之,我們可以說 Spring Boot 只是 Spring 本身的擴展,使開發,測試和部署更加方便。

關于Spring和SpringBoo有什么區別就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

郑州市| 皮山县| 墨竹工卡县| 额尔古纳市| 鄂州市| 册亨县| 策勒县| 巴中市| 新源县| 大厂| 无极县| 新平| 侯马市| 于田县| 巴中市| 榆树市| 延安市| 汽车| 漯河市| 新乡市| 阳曲县| 博罗县| 临漳县| 连江县| 周宁县| 渝中区| 桦川县| 新沂市| 邓州市| 平舆县| 庆云县| 镇赉县| 平远县| 广德县| 南靖县| 怀来县| 花莲市| 余庆县| 信宜市| 岱山县| 民和|