版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
SpringBoot概 什么是Spring SpringBoot的核心功 SpringBoot的優(yōu)點和缺 優(yōu) 缺 SpringBoot入門案 開發(fā) 直接運行main方法進行啟 以jar包的方式運 SpringBoot核 無xml配置的實 入門 入口類和 編寫 pom.xml文 編寫 添加方 添加方 上傳文件 攔截 Dao開 User實體 測試 整合 pom.xml文 測 整合 pom.xml文 測 整合 pom.xml文 配置 測試 小 整合 pom.xml文 總 SpringSpringBootSpring并且做了一系列的默認配置,我們無需在進行手動配置,直接拿過來直接使用!Springmvcweb應用,那么我們可能創(chuàng)建一個springmvc的配置文件開發(fā)Controller導入相關的依賴包開發(fā)Controller更改SpringBoot的默認配置也是可以的.極大的簡化了我們的開發(fā).spring項目:SpringBootjarjavajarxxx.jar優(yōu)點是:節(jié)省服務器資源內(nèi)嵌servlet容器:SpringBoot可以選擇內(nèi)嵌Tomcat,Jetty,這樣我們無須以war包形式部署項目。提供starter簡化Maven配置:在SpringBoot項目中為我們提供了很多的spring-boot-starter-xxx的項目(我們把這個依賴可以稱之為SpringBootwebspring-boot-starter-web這個項目的依賴,導入這個依賴以后!SpringBootBeanSpringBoot不:xml配置SpringBootspring4.x提供的注解新特性來實現(xiàn)無代碼生成和xml配置。spring4.x提倡使用配置和注解配置組合,而SpringBoot不需要任何xmlspring提供運行時的應用監(jiān)控資料相對比較少版本迭代較快SpringBoot在pom.xml加入spring-boot-starter-web的依賴添加父工程加入web開發(fā)的支持定義變量開發(fā)packagepackageimportimportorg.springframework.web.bind.annotation.ResponseBody;publicclassHelloSpringBootController@RequestMapping(value="/hello")publicStringhello()return"HelloSpringBoot"}}packagepackageimportpublicclass{publicstaticvoidmain(String[]{啟動SpringBoot}直接運行main以jarSpringBoot的maven插件SpringBoot開發(fā)我們的Spring應用是非常簡單的.那么同時很多同學可能存在一些疑問:無xml的配SpringBoot無xml自從spring3.0以后spring提供了很多的注解來替代xml文件的配置.最為核心的是下面的兩個注解: 標注該類是一個配置類.類似于我們定義的applicationContext.xml@Bean類似于我們在之前的spring配置文件中配置的<beanid=入門Spring依賴包maven編寫publicclassHelloService{publicString{return"HelloJavaConfig";}packagepackageimportimport@ConfigurationpublicclassApplicationConfiguration publicHelloService{returnnewHelloService()}}packagepackagepublicclassJavaConfigTest{publicstaticvoidmain(String[]args)//AnnotationConfigApplicationContextapplicationContext=newHelloServicehelloService=applicationContext.getBean(HelloService.class);Stringresult=helloService.sayHello();}}練習(配置導入user腳本文件在入門小Demopom.xml文件的配置基礎之上加入如下依賴加入spring-jdbc的依賴包加入druid的數(shù)據(jù)源加入mysql的驅動privateprivateIntegerid;privateStringuserName;privateStringsex;privateStringaddresspackagepackagecom.itheima.config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.jdbc.core.JdbcTemplate;importpublicclassJdbcTemplateConfigurationprivateStringdriverClassNameprivateStringjdbcUrl;privateStringjdbcUserName;privateStringjdbcPassword;publicDataSourcedataSource()DruidDataSourcedataSource=newDruidDataSource();returndataSource}publicJdbcTemplatejdbcTemplate(DataSource{JdbcTemplatejdbcTemplate=newJdbcTemplate(dataSource);returnjdbcTemplate;}}packagepackageimportjava.sql.ResultSet;importjava.util.List;importorg.springframework.jdbc.core.JdbcTemplate;importcom.itheima.config.domain.User;publicclass{publicstaticvoidmain(String[]{獲取JdbcTemplatejdbcTemplate=publicUsermapRow(ResultSetrs,intnum)throwsSQLExceptionUseruser=newUser();return}})//輸出}}web.xmlSpringmvc的前端控制器(DispatcherServlet).但是我們剛才在編寫入門案例的時候我們并沒有去做任何的配置.那么我們?yōu)槭裁纯梢允褂媚?那是因為SpringBoot給我們做了自動配置.那么接下來我們就來講解一下SpringBoot中自動配置的原理.會自動掃描@SpringBootApplication所在類的同級包以及下級包中的bean(如果是jpa項目還會自動掃描標注@Entity的實體類)@SpringBootApplication注解是SpringBoot的核心注解:通過源碼我們發(fā)現(xiàn)在@SpringBootApplication:@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan我們把這樣的注解稱之為組合注解.組合注解作用就是簡化我們的注解使用:我們在某一個類上使用了@SpringBootApplication那么就相當于在該類上使用了該注解上定義的其他的三個注解這個注解也是一個組合注解,在SpringBoot項目中推薦使用@SpringBootConfiguration替代:依賴,會自動添加會自動添加tomcatspringmvc的依賴springboottomcatspringmvc;tomcat8080端口,Springmvc請求處理方式入門案例中我們只是加入了spring-boot-starter-web這么一個依賴,就可以實現(xiàn)DispatcherServlet的相關配置,這是為什么呢?注意當我們加入了spring-boot-starter-web的依賴以后,maven的依賴傳遞特性,會自動將一些依賴包加入到我們的項目中;比如會自動添加tomcat和springmvc的依賴:那么這些依賴包的確加入到了我們的項目中,那么怎么完成的自動配置呢?因為在加入spring-boot-starter-web依賴的時候,會自動將另外一個依賴加入進來:這個依賴包就是那么和我們web開發(fā)相關的自動配置類是在web包下,在這個web包中定義了很多的xxxAutoConfiguration這樣的類,這些類其實就是用來完成自動配置的;我們不妨打開DispatcherServletAutoConfiguration看看上面的是關于DispatcherServletAutoConfiguration的定義,通過源碼我們發(fā)現(xiàn)在這個類上定義了很多的好幾個注解: 這個注解自動配置的順序定義,取值為int的最小值,優(yōu)先級最高:::需求自定義自動配置類,完成HelloService的自動配置(itheima-spring-starter-編寫publicclassHelloService{privatefinalStringDEFAULT_SAYWORD="hello"publicStringsayHello(StringsayWord)if(sayWord!=null&&{returnsayWord}returnDEFAULT_SAYWORD}}包packagepackageimportorg.springframework.context.annotation.Bean;importcom.itheima.spring.starter.service.HelloService;publicclassHelloServiceAutoConfigpublicHelloServicehelloStaterService(){}} 定義變量導入springboot測試的依賴包依賴packagepackageimportorg.springframework.context.ConfigurableApplicationContext;publicclass{publicstaticvoidmain(String[]{//SpringConfigurableApplicationContextapplicationContext=SpringApplication.run(HelloStarterServiceTest.class,args);HelloServicehelloStaterService=applicationContext.getBean(HelloService.class);StringsayHello=helloStaterService.sayHello(null);}使用Junitpackagepackageimportimportimportorg.springframework.boot.test.context.SpringBootTest;importcom.itheima.spring.starter.service.HelloService;@SpringBootTest(classes=HelloStarterServiceTest.class)publicclassApplicationTest{privateHelloServicehelloServicepublicvoidtestAutoConfig()StringsayHello=helloService.sayHello(null);}}如果我們不需要SpringBoot自動配置,想關閉某一項的自動配置,該如何設置呢?比如我們不想要SpringBootSpringBoot使用一個全局的配置文件,這個全局配置文件為pertiesapplication.yml;src/main/resources目錄下,比如我們可以更改tomcat的端口號:測試SpringBootstarterpom,starterpom,那么相關的技術配置將會生效我們就可以直接使用SpringBoot為我們提供的自動配置的bean;SpringBoot官方為我們提供的starterpom文件有:Springboot不建議我們使用配置文件的方式來完成配置,但是有的情況下我們不得不需要使用配置文件,那么我們就可以使用:,web開發(fā)中,css,js,圖片等等一些靜態(tài)的資源文件!那么我們應該把這些靜態(tài)資源存儲在什么目錄下呢?SpringBoot項目要求我們將這個靜態(tài)資源文件存儲到resources目錄下的static目錄中;當然這個配置是可以進行更改的,但是不建議更改!在進行訪問的時候我們不需要添加上static文件目錄,SpringBoot會自動在static目錄中查找對應的資源文件.SpringBoot項目建議我們使用模板引擎來進行頁面視圖的渲染,jsp!tomcatjsp頁面的支持.SpringBoot提供了大量的模板引擎,包含F(xiàn)reemarkerGroovy,Thymeleaf,VelocityMustache.SpringBoot繼承freemarker作為頁面視圖!加入spring-boot-starter-freemarkerprivateprivateIntegerid;privateStringuserName;privateStringsex;privateStringaddressSpringBoottemplates目錄專門用來存儲模板文件的.因此我們需要將指定的模板文件放在該目錄下!模板文件<!DOCTYPE<!DOCTYPE<body<table<#listusersas編寫freemarker的程序員,都知道!freemarker+=>>>輸出結果!SpringBoot我們只需要將數(shù)據(jù)存儲到Model對象中.然后返回到結果頁面!SpringBoot會自動的將數(shù)據(jù)填充到模板完成視圖的渲染!packagepackageimportjava.util.List;importorg.springframework.ui.Model;importcom.itheima.spring.domain.User;publicclassUserController@RequestMapping(value="/findAllUser")publicStringfindAllUser(Modelmodel){List<User>users=newArrayList<User>();users.add(newUser(1"張三"1"北京"usersusers.add(newUser(2"李四"2"西安"users.add(newUser(3"王五"2"草灘六路"users.add(newUser(4"趙六"1"上海"return"user"}}在進行項目開發(fā)階段,我們需要頻繁的修改代碼,來進行項目的測試!每一次進行項目代碼修改的時候,我們都需要進行項目重新啟動,這!Srngoot:ngbovoo!!熱部署配置web開發(fā)的時候,我們都需要對異常進行處理!SpringmvcHandlerExceptionResolver對象對異常進行統(tǒng)一的處理!SpringBoot中如何進行異常的統(tǒng)一處理呢?SpringBoot中給我們提供了兩個注解,可以用來完成異常的處理! 捕獲@RequestMapping注解的方法拋出的異常,我們可以通過該注解實現(xiàn)自定義異常處理value指定需要返回ModelAndView對象Model但是需要使用@ResponseBody注解將其轉化成Json字符串返回String表示返回一個邏輯視圖@RequestMapping@RequestMapping(value="/findUser/{num}")publicStringfindUser(@PathVariable(value="num")intnum)if(num==1)return"HelloUser"}elsethrownewRuntimeException("notfinduserinfo..............")}}packagepackageimportorg.springframework.web.bind.annotation.ControllerAdvice;importorg.springframework.web.bind.annotation.ExceptionHandler;importorg.springframework.web.bind.annotation.ResponseBody;publicclassUserExceptionHandlerpublicpublicStringhandlerException(Exception{}}<!DOCTYPE<!DOCTYPE<body<inputtype="file"id="inputfile"@RequestMapping@RequestMapping(value=publicStringpath2(@PathVariable(value="path")String{returnpath}上傳文件importjava.io.File;importimportorg.springframework.web.multipart.MultipartFile;publicclassUploadController@RequestMapping(value=publicStringfileUpload(MultipartFileuploadFile)tryFilefile=newFile("D:\\images\\"+uploadFile.getOriginalFilename());}}catch(Exception{}return"success"}}攔截器對使用Springmvc、Struts的開發(fā)人員來說特別熟悉,因為你只要想去做好一個項目必然會用到它。攔截器在我們平時的項目中用處有很多,如:日志記錄、用戶登錄狀態(tài)攔截、安全攔截等等。而SpringBoot內(nèi)部集成的是Springmvc控制框架,所以使用起來跟SpringMVC沒有區(qū)別,只是在配置上有點不同。需求:當用戶請求以/file-upload這個路徑時候,需要驗證用戶是否登錄如果沒有登錄,跳轉到登錄頁面,讓用戶進行登錄!如果用戶已經(jīng)登packagepackageimportjavax.servlet.http.HttpServletRequest;importorg.springframework.web.servlet.ModelAndView;publicclassCheckUserLoginInterceptorimplementsHandlerInterceptorpublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{StringuserName=(String)request.getSession().getAttribute("user");if(userName==null||userName.equals("")){returnfalse;}elsereturn}}ModelAndViewmodelAndView)throwsException{}publicvoidafterCompletion(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler,Exceptionex)throwsException{}}<!DOCTYPE<!DOCTYPE<body<formrole="form"<inputtype="text"id="userName"<inputtype="password"id="password""編寫登錄的importimportimportpublicclassLoginController@RequestMapping(value=publicStringlogin(StringuserName,Stringpassword,HttpSession{System.out.println("userName====>>>"+userName+",password======>>>>"+password);session.setAttribute("user",userName);}}packagepackageimportimporterceptor.CheckUserLoginInterceptor;}}SpringBoot不建議我們使用jsp頁面作為視圖的顯示層,因此在SpringBoot中默認是不支持jsp頁面的.jsp頁面就需要添加jsp頁面的支持!jsp的支持Dao關于持久層的開發(fā)存在很多的技術,SpringJdbcTemplate,也可以使用一些第三方的框架,HibernateMybatis.mybatis進行開發(fā).SpringBootmybatis的整合.SpringBoot和Mybatis的整合存在兩種方式:第二種:使用mybatis-spring整合的方式,也就是我們傳統(tǒng)的方式需求:查詢所有的用戶信息定義變量添加父工程加入springboot對jdbc的支持配置mybatis整合spring所需要的依賴包mybatis的開發(fā)包springboot的測試包引入mysql配置druidSpringBoot的mavenMybatis的代理開發(fā)(所謂的代理開發(fā)就是我們程序員必須要編寫Dao接口,不需要編寫實現(xiàn)類,Mybatis通過代理模式給我們生成).那么要使用Mybatis的代理開發(fā)我們就需要配置兩個東西一個是SqlSessionFactoryBean另外一個就是MapperScannerConfigurer.那么接下來我們就來配置一下importjavax.sql.DataSource;importorg.mybatis.spring.SqlSessionFactoryBean;importorg.springframework.core.io.Resource;importorg.springframework.core.io.support.ResourcePatternResolver;@Bean(name=//SqlSessionFactoryBeansessionFactoryBean=newSqlSessionFactoryBean();ResourcePatternResolverpatternResolver=newPathMatchingResourcePatternResolver();Resourceresource=patternResolver.getResource("classpath:mybatis/mybatis-config.xml");returnsessionFactoryBean}}packagepackageimportimportorg.springframework.context.annotation.Bean;import//@AutoConfigureAfter(value={SqlSessionFactoryBeanConfiguration.class})publicclassMapperScannerConfigurerConfiguration{//MapperScannerConfigurermapperScannerConfigurer=newMapperScannerConfigurer();}}privateprivateIntegerid;privateStringuserName;privateStringsex;privateStringaddressimportjava.util.List;importpublicinterfaceUserMapperpublicabstractList<User>findAllUser()}}<?<?xmlversion="1.0"encoding="UTF-8"<!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN""http:///dtd/mybatis-3-mapper.dtd">查詢所有的用戶信息<selectid="findAllUser"resultType="com.itheima.mybatis.springboot.domain.User">selectid,usernameasuserName,sex,addressfromuserpackagepackageimportimportpublicclass{publicstaticvoidmain(String[]{//啟動應用}importjava.util.List;importimportimportorg.springframework.boot.test.context.SpringBootTest;importimportcom.itheima.mybatis.springboot.domain.User;@SpringBootTest(classes={MybatisSpringBootApplication.class})publicclassMybatisSpringBootTest{privateUserMapperuserMapper;publicvoidfindAll()List<User>user=userMapper.findAllUser();}}整合使用過SpringDataRedis的開發(fā)人員應該知道,SpringDataRedis給我們提供了一個類StringRedisTemplate用來簡化我們對Redis的操作.我們現(xiàn)在使用的是SpringBoot,StringRedisTemplate這個類,SpringBoot給我們進行了自動配置,因此我們只需要注入該類既packagepackageimportorg.springframework.boot.test.context.SpringBootTest;@RunWith(value=SpringJUnit4ClassRunner.class)publicclassRedisSpringBootTest{publicvoid}Stringvalue=redisTemplate.boundValueOps("itheima").get();}整合配置springboot和solr整合的starter##solr單節(jié)點配置#集群配置packagepackageimportorg.junit.Test;importorg.springframework.boot.test.context.SpringBootTest;@RunWith(value=SpringJUnit4ClassRunner.class)publicclassRedisSpringBootTest{publicvoidaddDocument()throwsExceptionSolrInputDocumentinputDocument=newSolrInputDocument();inputDocument.addField("id","100");solrClient.add(inputDocument);}}整合加入activemq的支持配置packagepackageimportimportmand.ActiveMQQueue;importmand.ActiveMQTopic;importpublicclassDestinationConfigpublicQueuequeueDestination()}publicTopictopicDestination()}}packagepackageimportimportorg.springframework.jms.core.JmsTemplate;importpublicclassActiveMQProducerprivateJmsTemplateprivateQueueprivateTopictopic;publicvoidsendMessage(){for(intx=0;x<10000;x++)jmsTemplate.convertAndSend(queue,"queue......"+x);jmsTemplate.convertAndSend(topic,"topic......"+x);try}catch(InterruptedException{}}}}packagepackageimportimportimportorg.springframework.boot.test.context.SpringBootTest;importimportcom.itheima.activemq.ActiveMqApplication;@SpringBootTest(classes={ActiveMqApplication.class})publicclassActivemqApplicationTest{privateActiveMQProduceractiveMQProducerpublicvoid{}}packagepackageimportorg.springframework.stereotype.Component;publicvoidtopicConsumer(Stringtext){}publicvoidqueueConsumer(Stringtext){}}加入上述配置了以后,topic的類型的消息,queue類型的消息!boolean類型的值.)packagepackageimportimportorg.springframework.context.annotation.Bean;importimportorg.springframework.jms.config.JmsListenerContainerFactory;@Bean(name=publicConnectionFactory{ConnectionFact
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報參考:健全全過程人民民主制度體系研究
- 課題申報參考:家校社聯(lián)動共育模式對青少年24h活動行為與抑郁癥狀改善的促進研究
- 2025年香港離婚協(xié)議書范本離婚后子女監(jiān)護權協(xié)議3篇
- 二零二五年影視剪輯師版權合作協(xié)議3篇
- 二零二五版白酒銷售顧問銷售數(shù)據(jù)分析與報告合同3篇
- 二零二五版木材廠土地租賃合同與林業(yè)產(chǎn)業(yè)發(fā)展規(guī)劃3篇
- 二零二五版國際IT產(chǎn)品代理銷售協(xié)議2篇
- 2025版小區(qū)公共區(qū)域保潔與綠化維護承包合同3篇
- 2025年三明貨運從業(yè)資格證好考嗎
- 二零二五版供應鏈融資高額抵押反擔保合同3篇
- 2024公路瀝青路面結構內(nèi)部狀況三維探地雷達快速檢測規(guī)程
- 2024年高考真題-地理(河北卷) 含答案
- 中國高血壓防治指南(2024年修訂版)解讀課件
- 2024風力發(fā)電葉片維保作業(yè)技術規(guī)范
- 《思想道德與法治》課程教學大綱
- 2024光儲充一體化系統(tǒng)解決方案
- 封條(標準A4打印封條)
- 石油天然氣建設工程交工技術文件編制規(guī)范(SYT68822023年)交工技術文件表格儀表自動化安裝工程
- 中醫(yī)治療“濕疹”醫(yī)案72例
- 2023年大學生《思想道德與法治》考試題庫附答案(712題)
- 清代文學緒論
評論
0/150
提交評論