日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Spring和SpringBoot之間的區(qū)別

瀏覽:49日期:2023-03-19 14:23:50

在本教程中,我們將研究標準Spring框架和Spring Boot之間的區(qū)別。

我們將重點討論Spring的模塊,如MVC和Security,在核心Spring中使用時與在Boot中使用時的區(qū)別。

Spring是什么?

簡單地說,Spring框架為開發(fā)Java應用程序提供了全面的基礎設施支持。

它包含了一些很好的功能,比如依賴注入,以及一些現(xiàn)成的模塊,比如:

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

這些模塊可以大大縮短應用程序的開發(fā)時間。

例如,在java web開發(fā)的早期,我們需要編寫大量樣板代碼來將記錄插入到數(shù)據(jù)源中。通過使用springjdbc模塊的JDBCTemplate,我們可以用很少的配置將它簡化為幾行代碼。

Spring Boot是什么?

Spring Boot基本上是Spring框架的擴展,它消除了設置Spring應用程序所需的樣板配置。

它對Spring平臺持固執(zhí)己見的觀點,它為更快、更高效的開發(fā)生態(tài)系統(tǒng)鋪平了道路。

以下是Spring Boot的一些功能:

持約定優(yōu)于配置的“starter”依賴關系,以簡化構(gòu)建和應用程序配置 嵌入式服務器避免了應用程序部署的復雜性 度量、運行狀況檢查和外部化配置 自動配置-只要可能

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

Maven依賴項

首先,讓我們看看使用Spring創(chuàng)建web應用程序所需的最小依賴性:

<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只需要一個依賴項即可啟動并運行web應用程序:

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

在構(gòu)建期間,所有其他依賴項都會自動添加到最終存檔中。

另一個很好的例子是測試庫。我們通常使用一組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創(chuàng)建jsp web應用程序所需的配置。

Spring需要定義dispatcherservlet、映射和其他支持配置。我們可以用web.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@Configurationpublic 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 starter后,Spring Boot只需要幾個屬性就可以工作:

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

通過一個名為auto-configuration的process添加bootwebstarter,上面所有的Spring配置都會自動包含進來。

這意味著springboot將查看應用程序中存在的依賴項、屬性和bean,并基于它們啟用配置。

當然,如果我們想添加我們自己的自定義配置,那么Spring-Boot自動配置就會退出。

配置模板引擎

現(xiàn)在讓我們學習如何在Spring和springboot中配置Thymeleaf模板引擎。

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

@Configuration@EnableWebMvcpublic 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的依賴性就可以在web應用程序中啟用thymeleaf支持。由于Thymeleaf3.0中的新特性,我們還必須在springboot2web應用程序中添加thymeleaf-layout-dialect作為依賴項。或者,我們可以選擇添加一個springbootstarter和eleaf依賴,它將為我們處理所有這些。

一旦依賴項就位,我們就可以將模板添加到src/main/resources/templates文件夾中,Spring引導將自動顯示它們。

Spring Security 配置

為了簡單起見,我們將看到如何使用這些框架啟用默認的HTTP基本身份驗證。

讓我們先看看使用Spring啟用安全性所需的依賴項和配置。

Spring需要標準的springsecurityweb和springsecurityconfig依賴項來設置應用程序中的安全性。

接下來,我們需要添加一個類來擴展WebSecurityConfigureAdapter并使用@EnableWebSecurity注釋:

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

這里我們使用inMemoryAuthentication來設置身份驗證。

springboot還需要這些依賴項才能工作,但是我們只需要定義spring-boot-starter-security的依賴項,因為這樣會自動將所有相關的依賴項添加到classpath類路徑中。

springboot中的security安全配置與上面的相同。

要了解如何在Spring和Spring引導中實現(xiàn)JPA配置,我們可以查看我們的文章A Guide To JPA with Spring:https://www.baeldung.com/the-persistence-layer-with-spring-and-jpa

Application Bootstrap

在Spring和Spring引導中引導應用程序的基本區(qū)別在于servlet。Spring使用web.xml或SpringServletContainerInitializer作為其引導入口點。

另一方面,SpringBoot只使用Servlet3特性來引導應用程序。我們來詳細談談。

Spring如何引導?

Spring既支持傳統(tǒng)的web.xml引導方式以及最新的Servlet3+方法。

讓我們看看web.xml分步進近:

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

2.DispatcherServlet定義在web.xml中由容器實例化。

3. DispatcherServlet通過讀取WEB-INF/{servletName}創(chuàng)建WebApplicationContext-servlet.xml.

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

下面是如何使用Servlet3+方法進行Spring引導:

1. 容器搜索實現(xiàn)ServletContainerInitializer的類并執(zhí)行。

2. SpringServletContainerInitializer查找實現(xiàn)WebApplicationInitializer的所有類。

3. WebApplicationInitializer使用XML或@Configuration類創(chuàng)建上下文。

4. WebApplicationInitializer使用先前創(chuàng)建的上下文創(chuàng)建DispatcherServlet。

如何啟動Spring Boot?

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

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

默認情況下,springboot使用嵌入式容器來運行應用程序。在本例中,springboot使用public static void主入口點來啟動嵌入式web服務器。

它還負責將Servlet、Filter和servletContextInitializerbean從應用程序上下文綁定到嵌入式Servlet容器。

springboot的另一個特性是,它自動掃描主類的同一個包或子包中的所有類中的組件。

此外,springboot還提供了將其部署為外部容器中的web存檔的選項。在這種情況下,我們必須擴展SpringBootServletInitializer:

@SpringBootApplicationpublic class Application extends SpringBootServletInitializer { // ...}

在這里,外部servlet容器查找在web存檔的META-INF文件中定義的主類,SpringBootServletInitializer將負責綁定servlet、過濾器和ServletContextInitializer。

打包和部署

最后,讓我們看看如何打包和部署應用程序。這兩個框架都支持Maven和Gradle等常見的包管理技術;但是,在部署方面,這些框架有很大的不同。

例如,springboot maven插件在Maven中提供springboot支持。它還允許打包可執(zhí)行jar或war,并“就地”運行應用程序

在部署環(huán)境中,Spring Boot優(yōu)于Spring的一些優(yōu)點包括:

提供嵌入式容器支持 設置為使用命令java-jar獨立運行jar 用于排除依賴項的選項,以避免在外部容器中部署時發(fā)生潛在的jar沖突 用于在部署時指定活動配置文件的選項 集成測試的隨機端口生成 結(jié)論

在本文中,我們了解了Spring和Spring Boot之間的區(qū)別。

簡而言之,我們可以說springboot只是Spring本身的一個擴展,它使開發(fā)、測試和部署更加方便。

以上就是Spring和SpringBoot之間的區(qū)別的詳細內(nèi)容,更多關于Spring和SpringBoot區(qū)別的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品网址| 国产欧洲在线| 中文在线а√天堂| 精品欧美日韩精品| 日韩a一区二区| 日韩国产激情| 电影天堂国产精品| 激情综合激情| 欧美综合二区| 日本不卡高清| 麻豆国产欧美一区二区三区| 成人午夜在线| 9999国产精品| av综合电影网站| 色婷婷狠狠五月综合天色拍| 国产欧美一级| 精品亚洲a∨一区二区三区18| 国产精品一区高清| 精品久久免费| 亚洲成人精品| 国产精品毛片在线| 欧美影院精品| 91视频一区| 亚洲成人免费| 少妇高潮一区二区三区99| 免费在线观看视频一区| 亚洲免费播放| 亚洲va久久久噜噜噜久久| 亚洲精品免费观看| 国产精品一级| 亚洲a一区二区三区| 一区免费在线| 欧美一级二区| 精品国模一区二区三区| 久久婷婷久久| 亚洲欧美日韩国产一区二区| 欧美精品一线| 欧美在线精品一区| av资源亚洲| 蜜臀久久久99精品久久久久久| 免费看的黄色欧美网站| 亚洲欧美久久| 欧美日韩亚洲一区| 欧美片第1页| 免费日韩精品中文字幕视频在线| 日韩不卡免费视频| 成人av三级| 男女激情视频一区| 精品视频国内| 国产精品老牛| 老司机免费视频一区二区三区| 久久免费影院| 婷婷综合网站| 人人爱人人干婷婷丁香亚洲| 国产欧美日韩精品高清二区综合区 | 欧美久久天堂| 亚洲免费高清| 手机在线电影一区| 日韩精品免费视频人成| 成人欧美一区二区三区的电影| 视频一区二区欧美| 精品亚洲二区| 色狠狠一区二区三区| 精品日本视频| 亚洲一区二区日韩| 卡一精品卡二卡三网站乱码| 精品国产91| 亚洲欧美不卡| 美日韩一区二区三区| 97精品一区| 日韩在线成人| 日韩美女一区二区三区在线观看| 99成人超碰| 日本视频中文字幕一区二区三区| 精品香蕉视频| 免费视频最近日韩| 久久99高清| 夜久久久久久| 久久精品国产在热久久| 神马午夜在线视频| 亚洲精品美女| 欧美一区二区三区高清视频| 亚洲深夜影院| 国产一区二区三区四区大秀| 韩国精品主播一区二区在线观看 | 色婷婷狠狠五月综合天色拍| 亚洲午夜精品久久久久久app| 亚洲精品1区| 久久中文字幕一区二区| 欧美国产91| 麻豆精品视频在线观看| 欧美日韩一区二区综合| 欧美精品一区二区久久| 亚洲欧洲日本mm| 久久久久91| 欧美亚洲tv| 亚洲欧美不卡| 免费在线小视频| 久久精品99国产精品| 美女少妇全过程你懂的久久| 亚洲精品日本| 欧美成人综合| 精品亚洲a∨一区二区三区18| 黄色免费成人| 亚洲伊人av| 久久一区国产| 国产欧美在线观看免费| 国产精品毛片在线| 欧美一区二区性| 日韩不卡视频在线观看| 国产精品亚洲片在线播放| 免费精品视频| 午夜精品一区二区三区国产| 国产精品亚洲人成在99www| 亚洲一区激情| 91久久亚洲| 西西人体一区二区| 欧美激情网址| 国产视频一区二| 日韩av一级片| 久久精品97| 国产精品亚洲四区在线观看 | 免费看一区二区三区| 亚洲一区成人| 日韩一级网站| 亚洲制服少妇| 一本一道久久a久久| 亚洲精品99| 蜜桃tv一区二区三区| 日本在线精品| 波多野结衣久久精品| 日本不良网站在线观看| 国产精品亚洲综合久久| 青青草视频一区| 国产欧美日韩在线观看视频| 男人操女人的视频在线观看欧美| 亚洲精品91| 免费黄色成人| 日韩三级精品| 欧美日韩视频免费看| 亚洲精品在线国产| 国产欧美激情| 久久电影tv| 亚洲国产日韩欧美在线| 神马日本精品| 国产二区精品| 一区久久精品| 国产欧美日韩亚洲一区二区三区| 久久狠狠久久| 麻豆国产欧美一区二区三区| 日本一区二区三区中文字幕| 精品1区2区3区4区| 香蕉久久久久久| 国产精品视频一区视频二区| 日韩一区二区三免费高清在线观看 | 久久中文字幕av一区二区不卡| 成人小电影网站| 色在线中文字幕| 99在线精品免费视频九九视| 久久精品动漫| 另类亚洲自拍| 国产精品一区二区三区四区在线观看 | 国产成人精品福利| 99久久久久久中文字幕一区| 色在线视频观看| 国产视频久久| 国产欧美另类| 亚洲精品在线影院| 美女毛片一区二区三区四区| 99精品网站| 蜜桃免费网站一区二区三区| 免费国产亚洲视频| 国产精品大片免费观看| 精品国产99| 国产日韩综合| 成人欧美一区二区三区的电影| 国产一区亚洲| 7m精品国产导航在线| 日韩av在线播放网址| 999久久久国产精品| 免费日本视频一区| 国产自产自拍视频在线观看| 久久精品中文| 青草国产精品| 婷婷久久免费视频| 久久美女性网| 国产乱码精品一区二区三区四区| 国产精品xx| 日本一区免费网站| 欧美亚洲精品在线| 久久99精品久久久野外观看| 国产69精品久久| 爽好久久久欧美精品| 国产精品一二| 国产亚洲精品久久久久婷婷瑜伽| 91成人网在线观看| 国产成年精品| 日韩美女精品| 欧美不卡高清| 国产日韩欧美在线播放不卡|