一冀续、Spring的主要功能:
IOC 依賴注入(控制反轉(zhuǎn))和AOP (面向切面的編程)
正常情況下,有A對象需要B對象時糠聪,我們直接New B對象婆排。這樣A声旺、B兩對象間耦合度比較高。Spring提供一種實(shí)現(xiàn)段只,對象的創(chuàng)建由第三方統(tǒng)一腮猖、集中管理,A對象如需B對象時赞枕,直接申請即可得到澈缺,無需自已NEW 對象,以實(shí)現(xiàn)解耦炕婶。也就是A對象需B對象姐赡,B對象由第三方創(chuàng)建,并注入給A對象柠掂。這種思想稱為依賴注入项滑。這個第三方也稱為IOC容量,ApplcationContext陪踩。
Spring中提供統(tǒng)一管理的容器是ApplicationContext,也稱為應(yīng)用上下文杖们。
二、ApplicationContext的配置方式
ApplicationContext是Bean的生產(chǎn)工廠,是Bean的容器肩狂。容量根據(jù)配置信息進(jìn)行生產(chǎn)和管理Bean摘完。那如何定義或表示Bean及Bean之間的關(guān)系。
Spring提供了三種方式:1傻谁、XML孝治;2、注解审磁;3谈飒、Java配置
先介紹XML方式,如建立ApplicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="login" class="com.stu.users.login"></bean>
</beans>
其中<bean>中的ID和Class屬性也定義bean
Spring通過裝載配置文件來實(shí)例化ApplicationContext,實(shí)例化之化态蒂,通過Application
ApplicationContext的getBean來獲得bean實(shí)例杭措。
根據(jù)配置文件的不同格式和存放位置,Spring提供了多種ApplicationContext的實(shí)現(xiàn)钾恢。
三手素、ApplicationContext如何啟動
那ApplicationContext 本身是如何實(shí)例化的。在WEB中瘩蚪,可以通過Listener方式來啟動spring容器泉懦。ApplicationContext的缺省配置文件是存放在WEB-INF目錄下的ApplicationContext.XML。當(dāng)然疹瘦,你也可以定義崩哩。在WEB.XML中配置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/Root-Context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
四、通過IDEA建立Spring 項(xiàng)目
1言沐、File->New Project->選左邊的Maven邓嘹,選擇Create from archetype中的org.apache.archetypes.maven-archetype-webapp
2、修改POM.XML, 增加Spring的類庫
<properties>
<spring.servison>4.3.7.RELEASE</spring.servison>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.servison}</version>
</dependency>
3险胰、修改WEB.XML
修改為Servlet 3.1格式
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
增加ApplicationContext的配置文件和Listener
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/Root-Context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
五吴超、建立SpringMVC 項(xiàng)目
1、在POM.XML 增加Spring MVC的類庫鸯乃。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.servison}</version>
</dependency>
2鲸阻、在WEB.XML中增加DispatcherServlet
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3、創(chuàng)建springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
">
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/Viwe/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
4缨睡、創(chuàng)建Controler
package com.edu.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Created by User on 2017/3/31.
*/
@Controller
public class Index {
@RequestMapping(value="/",method = RequestMethod.GET )
public String hello(){
return "index";
}
@RequestMapping(value="/world",method = RequestMethod.GET )
public String helloworld(){
return "world";
}
}