springmvc的組件和流程 如何在Maven中配置Spring依賴(lài)?
如何在Maven中配置Spring依賴(lài)?一. spring-security-coreSpring Security的核心功能由spring-security-core包提供,包括認(rèn)證和訪問(wèn)控制功能、
如何在Maven中配置Spring依賴(lài)?
一. spring-security-core
Spring Security的核心功能由spring-security-core包提供,包括認(rèn)證和訪問(wèn)控制功能、對(duì)獨(dú)立應(yīng)用程序的支持、方法級(jí)安全性和JDBC支持。
ltpropertiesgt
lt/屬性gt
ltdependencygt
ltartifactIdgtspring-security-corelt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴(lài)性gt
注意:我們使用的是Spring Security的3.2.x版本——Spring和Spring Security的版本計(jì)劃不同,所以它們的版本號(hào)之間沒(méi)有一一對(duì)應(yīng)的關(guān)系。
如果項(xiàng)目使用的是Spring的老版本,需要注意的是Spring Security 3.1.x的版本并不依賴(lài)于Spring 3.1.x的版本,因?yàn)镾pring Security 3.1.x的版本是在Spring 3.1之前發(fā)布的。春天 s的計(jì)劃是在后續(xù)版本中讓雙方版本號(hào)更接近。更多詳情,請(qǐng)見(jiàn)本JIRA。我們將在后面看看這種情況對(duì)我們的實(shí)際影響。
第二,spring-security-web
為了給Spring Security添加Web支持,您需要引入spring-security-web依賴(lài):
ltdependencygt
ltartifactIdgtspring-security-weblt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴(lài)性gt
這個(gè)項(xiàng)目為Servlet環(huán)境的URL訪問(wèn)控制引入了相關(guān)的基本安全組件和過(guò)濾器。
第三,Spring Security和老版本Spring Core之間的依賴(lài)性。
如上所述,這種新的依賴(lài)產(chǎn)生了Maven依賴(lài)問(wèn)題,Spring Security的相關(guān)jar并不依賴(lài)于Spring core的最新jar(而是以前的版本)。這可能會(huì)使相關(guān)的Spring core相關(guān)包在被配置到類(lèi)路徑之前位于最新的Spring 4.x相關(guān)包之前。
這是怎么發(fā)生的?我們需要了解Maven處理版本的機(jī)制,Maven會(huì)選擇最接近依賴(lài)樹(shù)根的版本。在前一個(gè)例子中,spriNg-orm依賴(lài)于spring-core的4.x版本,而spring-security-core依賴(lài)于spring-core的3.2.8版本。所以spring-orm和sprint-security-web的定義順序是個(gè)問(wèn)題,第一個(gè)會(huì)有更高的優(yōu)先級(jí)。最后,在我們的類(lèi)路徑中會(huì)有兩個(gè)版本的spring-core。
為了避免這種問(wèn)題,我們需要在pom文件中明確指定一些Spring依賴(lài),而不是依賴(lài)Maven隱式依賴(lài)機(jī)制。我們將在pom的根文件中定義特定的依賴(lài)關(guān)系,這樣這些依賴(lài)關(guān)系將具有更高的優(yōu)先級(jí)。在下面的例子中,所有的Spring核心組件都將使用相同的版本明確定義。對(duì)于多模塊項(xiàng)目,需要在父配置文件的dependencyManagement屬性中定義。
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-corelt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴(lài)性gt
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-context lt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴(lài)性gt
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-jdbclt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴(lài)性gt
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-beans lt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴(lài)性gt
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-aoplt/artifactIdgtltversiongt${}lt/versiongt
lt/依賴(lài)性gt
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-txlt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴(lài)性gt
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-expression lt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴(lài)性gt
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-weblt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴(lài)性gt
四。spring-security-config和其他
要使用Spring Security XML的豐富名稱(chēng)空間,您需要定義spring-security-config依賴(lài)關(guān)系:
ltdependencygt
ltartifactIdgtspring-security-configlt/artifactIdgt
ltversiongt${}lt/versiongt
ltscopegtruntimelt/scopegt
lt/依賴(lài)性gt
編譯時(shí)沒(méi)有代碼需要依賴(lài)這個(gè)包,所以它的作用域應(yīng)該定義為runtime。
最后,LDAP、ACL、CAS和OpenID支持需要添加自己的依賴(lài)包:Spring-Security-LDAP、Spring-Security-ACL、Spring-Security-CAS和spring-security-op
springmvc與mybatis整合中mapper接口中注解component是什么意思?
@Component泛指組件。當(dāng)組件難以分類(lèi)時(shí),我們可以使用此注釋來(lái)標(biāo)記它們。
(將普通pojo實(shí)例化到spring容器中等同于配置文件中的實(shí)例。