A. spring boot和maven的約定大於配置體現在哪些方面
Spring
Boot充分利用了JavaConfig的配置模式以及「約定優於配置」的理念,能夠極大的簡化基於Spring
MVC的Web應用和REST服務開發
B. 約定優於配置是什麼意思
約定優於配置(convention over configuration),也稱作按約定編程,是一種軟體設計範式,旨在減少軟體開發人員需做決定的數量,獲得簡單的好處,而又不失靈活性。
本質是說,開發人員僅需規定應用中不符約定的部分。例如,如果模型中有個名為Sale的類,那麼資料庫中對應的表就會默認命名為sales。只有在偏離這一約定時,例如將該表命名為"procts_sold",才需寫有關這個名字的配置。
C. ant與maven的區別
各有長處
maven可以管理整個項目聲明周期,很適於管理大型項目。an則主要處理編譯部署的問題。maven崇尚約定大於配置,因此配置文件很簡單,ant則主要考配置,但是ant的文件操作我覺得比maven強。
maven有大量插件可以用,基本上只有你想不到的沒有你找不到的。
D. react script 編譯配置
創建一個index.html文件,並且在這個文件中引入main.js的javascript程序文件,我們要做的就是編譯生成main.js的javascript文件。
二、在webpack.config.js文件中設置一個html插件的實例對象,
並制定的打包入口文件為index.html
在創建打包的配置對象的時候,傳入這個html插件的實例對象
下面是webpack.config.js文件中的配置
(1) 創建html插件的實例對象,並指定webpack的打包入口文件,約定大於配置,默認入口文件是index.js
(2) 創建webpack打包的配置信息,傳入上一步創建好的html插件對象
(3) 設置webpack打包的時候是否需要進行壓縮
(4) 設置webpack打包時的調試模式source-map
(5) 設置第三方模塊的配置規則,設置jsx文件的編譯包為babel-loader
設置scss文件的編譯包為style-loader,並且開啟css模塊化
設置css文件的編譯包為style-loader
E. springboot學習成本高嗎
學習成本高。
先了解Spring Boot的思想、理念、然後跟著小示例去實踐。
Spring Boot 是一套全新的框架,它來自於 Spring 大家族,因此 Spring 所有具備的功能它都有,而且更容易使用;Spring Boot 以約定大於配置的核心思想,默認幫我們進行了很多設置,多數 Spring Boot 應用只需要很少的 Spring 配置。Spring Boot 開發了很多的應用集成包,支持絕大多數開源軟體,讓我們以很低的成本去集成其它主流開源軟體。
F. Java語言開發獎助學金系統用什麼框架簡單
框架只是輔助,什麼框架都是可以完成項目的,看你自己對什麼框架比較熟,不過要我建議的話,我推薦使用ssm(Spring+SpringMVC+MyBatis)
為什麼要使用ssm?
減少編碼
好的開發框架編寫了大量的基礎功能,程序員將工作重心放在業務邏輯上的實現。比如spring簡化了java程序對資料庫的訪問,提高了資料庫的訪問效率和穩定性,程序員只需要寫好sql就行了。
規范性,重用性
開發框架使用了很多設計模式,比如mvc,在編寫代碼的時候程序員可以遵循mvc的模式,編寫Controller,entity,view對應的代碼
易擴展,易維護
mybatis實現了對資料庫的封裝,當程序從oracle轉向mysql時,不需要改動太多的地方,就能很方便的完成轉變。
規范化編碼,對維護性來說,方便了後續人員對代碼的理解和修改
ssm當然具備了以上三種優勢,尤其是從springMvc轉變spring boot之後,約定大於配置,進一步簡化了繁瑣的配置工作,編寫代碼如絲滑般順滑。
如對ssm想要有更深的了解 請移步:網頁鏈接
希望對你有所幫助,歡迎關注私信跟我探討java
G. boot自動配置的原理
Spring Boot是基於Spring開發的,是約定大於配置的核心思想。並且集成了大量的第三方庫配置比如redis、mongoDB、jpa等。Spring Boot就相當於maven整合了所有jar包,Spring Boot整合了所有框架。其設計目的是用來簡化新 Spring 應用的初始搭建以及開發過程,並不少什麼新的框架。
二、Spring Boot優點
優點其實就是簡單、快速
快速創建獨立運行的Spring項目以及主流框架集成
使用嵌入式的server容器,應用無需打成WAR包
starters自動依賴與版本控制
有大量的自動配置,簡化開發
准生產環境運行應用監控
與雲計算的天然集成
Spring Boot主程序分析
//@SpringBootApplication標注這個類是一個Springboot的應用@{publicstaticvoidmain(String[] args){//將Springboot應用啟動 SpringApplication.run(Springboot02DemoApplication.class, args);}}
SpringBootApplication源碼剖析,進入源碼,結果發現其實它是一個組合註解
第一個SpringBootConfiguration註解:@SpringBootConfiguration-->是Spring Boot配置類。下面有一個叫@Configuration:它是配置類,下面又有@Component,其實它就是一個注入組件。
第二個@EnableAutoConfiguration註解:是開啟自配配置功能
@AutoConfigurationPackage//自動配置包
@Import(.class)
public @interface EnableAutoConfiguration {}
@AutoConfigurationPackage:自動配置包,使用@Import(.class)註解來完成的,它是spring boot底層註解,作用是給容器中導入組件。
自動配置原理
(1)Spring Boot啟動的時候首先載入主配置類,開啟啦自動配置的功能(@EnableAutoConfiguration)
(2)自動配置功能@EnableAutoConfiguration的作用:它是利用了
@Import(.class)給容器中導入一些組件。那麼,他會給我們導入哪些組件呢?進入源碼看一下部分源碼如下。
//@EnableAutoConfiguration註解
@AutoConfigurationPackage
/@Import(.class)
public @interface EnableAutoConfiguration
@Import(.class)自動配置導入選擇
public class implements DeferredImportSelector, BeanClassLoaderAware,
ResourceLoaderAware, BeanFactoryAware, EnvironmentAware, Ordered {
//----部分源碼省略----//
protected AutoConfigurationEntry getAutoConfigurationEntry(AnnotationMetadata annotationMetadata) {
if (!isEnabled(annotationMetadata)) {
return EMPTY_ENTRY;
}
AnnotationAttributes attributes = getAttributes(annotationMetadata);
List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes);
//----部分源碼省略----//
}
H. springmvc配置servlet的攔截形式/*和/的區別
一、我們都知道在基於Spring的Application中,需要在web.xml中增加下面類似的配置信息:
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- Spring MVC Servlet -->
<servlet>
<servlet-name>servletName</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>servletName</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
此處需要特別強調的是 <url-pattern>/</url-pattern>使用的是/,而不是/*,如果使用/*,那麼請求時可以通過DispatcherServlet轉發到相應的Action或者Controller中的,但是返回的內容,如返回的jsp還會再次被攔截,這樣導致404錯誤,即訪問不到jsp。所以如果以後發現總是有404錯誤的時候,別忘了check一下 <url-pattern>/</url-pattern>的配置是否是/*.
二、其實Spring 的Servlet攔截器匹配規則(即 <url-pattern>...</url-pattern> )都可以自己定義,例:當映射為@RequestMapping("/user/add")時
1、攔截*.do、*.htm, 例如:/user/add.do
這是最傳統的方式,最簡單也最實用。不會導致靜態文件(jpg,js,css)被攔截。
2、攔截/,例如:/user/add
可以實現現在很流行的REST風格。很多互聯網類型的應用很喜歡這種風格的URL。
弊端:會導致靜態文件(jpg,js,css)被攔截後不能正常顯示。想實現REST風格,事情就是麻煩一些。後面有解決辦法還算簡單。
3、攔截/*,這是一個錯誤的方式,請求可以走到Action中,但轉到jsp時再次被攔截,不能訪問到jsp。
三、如何訪問到靜態的文件,如jpg,js,css?
如果你的DispatcherServlet攔截"*.do"這樣的有後綴的URL,就不存在訪問不到靜態資源的問題。
如果你的DispatcherServlet攔截"/",為了實現REST風格,攔截了所有的請求,那麼同時對*.js,*.jpg等靜態文件的訪問也就被攔截了。
我們要解決這個問題。
目的:可以正常訪問靜態文件,不可以找不到靜態文件報404。
方案一:激活Tomcat的defaultServlet來處理靜態文件
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
特點:1. 要配置多個,每種文件配置一個。
2. 要寫在DispatcherServlet的前面, 讓 defaultServlet先攔截請求,這樣請求就不會進入Spring了。
3. 高性能。
備註:
Tomcat, Jetty, JBoss, and GlassFish 自帶的默認Servlet的名字 -- "default"
Google App Engine 自帶的 默認Servlet的名字 -- "_ah_default"
Resin 自帶的 默認Servlet的名字 -- "resin-file"
WebLogic 自帶的 默認Servlet的名字 -- "FileServlet"
WebSphere 自帶的 默認Servlet的名字 -- "SimpleFileServlet"
方案二: 在spring3.0.4以後版本提供了mvc:resources , 使用方法:
<!-- 對靜態資源文件的訪問 -->
<mvc:resources mapping="/images/**" location="/images/" />
images/**映射到 ResourceHttpRequestHandler進行處理,location指定靜態資源的位置.可以是web application根目錄下、jar包裡面,這樣可以把靜態資源壓縮到jar包中。cache-period 可以使得靜態資源進行web cache
如果出現下面的錯誤,可能是沒有配置<mvc:annotation-driven />的原因。
報錯WARNING: No mapping found for HTTP request with URI [/mvc/user/findUser/lisi/770] in DispatcherServlet with name 'springMVC'使用<mvc:resources/>元素,把mapping的URI注冊到SimpleUrlHandlerMapping的urlMap中,
key為mapping的URI pattern值,而value為ResourceHttpRequestHandler,
這樣就巧妙的把對靜態資源的訪問由HandlerMapping轉到ResourceHttpRequestHandler處理並返回,所以就支持classpath目錄,jar包內靜態資源的訪問.
另外需要注意的一點是,不要對SimpleUrlHandlerMapping設置defaultHandler.因為對static uri的defaultHandler就是ResourceHttpRequestHandler,
否則無法處理static resources request.
方案三 ,使用<mvc:default-servlet-handler/>
<mvc:default-servlet-handler/>
會把"/**" url,注冊到SimpleUrlHandlerMapping的urlMap中,把對靜態資源的訪問由HandlerMapping轉到 org.springframework.web.servlet.resource. 處理並返回.
使用就是各個Servlet容器自己的默認Servlet.
補充說明:多個HandlerMapping的執行順序問題:
的order屬性值是:0
< mvc:resources/ > 自動注冊的 SimpleUrlHandlerMapping 的order屬性值是: 2147483646
<mvc:default-servlet-handler/>自動注冊 的SimpleUrlHandlerMapping 的order屬性值是: 2147483647
spring會先執行order值比較小的。當訪問一個a.jpg圖片文件時,先通過 來找處理器,一定是找不到的,因為我們沒有叫a.jpg的Action。然後再按order值升序找,由於最後一個 SimpleUrlHandlerMapping 是匹配 "/**"的,所以一定會匹配上,就可以響應圖片。 訪問一個圖片,還要走層層匹配。不知性能如何?
最後再說明一下,方案二、方案三 在訪問靜態資源時,如果有匹配的(近似)總攔截器,就會走攔截器。如果你在攔截中實現許可權檢查,要注意過濾這些對靜態文件的請求。
如何你的DispatcherServlet攔截 *.do這樣的URL後綴,就不存上述問題了。還是有後綴方便。
I. 什麼是約定大於法定
約定並不大於法律規定。具體情況如下:
1、約定優於法定主要是針對民事方面的合約,而且是不能與法律上強制性規定相沖突的情況下,約定在法律的效力上高於法定的效力,即法院或仲裁機構在對某一情況存在約定又有法定的情況下,採納約定的內容,不採納法定的內容。
2、在權利歸屬和獎勵報酬方面規定了約定優先的原則,充分尊重當事人的意思自治,當事人依法達成的協議對權利歸屬和獎勵報酬有約定的,首先適用其約定。
但在一定情況下有協議和法定內容時不採用法定內容,主要指民事或合同協議,這是「合同自由」和「意思自治」在法律民事和合同關系中的體現,法律的強制性規定除外。一般私法強調私法自治,這主要是在民事法律關系中。雙方約定的內容,只要不違反法律的強制性規定,就受法律的保護,如簽訂合同時,雙方可以自主約定合同成立和終止的時間,以及違約的具體規定等。
法定,由法律、法令所規定的:法定人數、法定婚齡、法定計量單位、按照法定的手續辦理。
合同約定違反法律、行政法規的強制性規定是無效的。法律沒有強制性規定的,當事人可以自由約定,在履行時也以約定優先,當時人沒有約定時遵循法律的相關規定處理。
《中華人民共和國民法典》第五百零二條 依法成立的合同,自成立時生效,但是法律另有規定或者當事人另有約定的除外。
第一百四十三條 具備下列條件的民事法律行為有效:
(一)行為人具有相應的民事行為能力;
(二)意思表示真實;
(三)不違反法律、行政法規的強制性規定,不違背公序良俗。
J. 你所理解的SpringBoot的自動配置是什麼
SpringBoot採用**約定大於配置設計思想**,將所有可能遇到的配置信息提前配置好,寫在自動配置的jar包中。每個Starter基本都會有對應的自動配置。
這意味著:日後我們在開發Spring應用程序的過程中,需要的配置項,由Pivotal團隊的開發人員,幫我們寫好了。怎麼實現的?主要是通過@Configuration聲明的配置類來實現。
SpringBoot幫我們將配置信息寫好,存放在一個jar包中:spring-boot-autoconfigure-2.1.11.RELEASE.jar,jar包里存放的都是配置類,以及讓配置類生效的"規則類"。
自動配置是SpringBoot中比較深奧的內容,相信你看完我的解釋,肯定懵懵懂懂;就去黑馬程序員官網視頻庫看免費視頻。