1. 什么是spring,它能够做什么?

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

简单来说Spring:

目的:解决企业应用开发的复杂性
功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
范围:任何Java应用
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 

2.框架:

2.1中间层框架(又称为万能胶)

       struts2
       spring
       hibernate

2.2容器框架

       JavaBean
       IOC和AOP

3. 什么是控制反转(或依赖注入) 

控制反转(IoC=Inversion of Control)IoC,用白话来讲,就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:(依赖)控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。

LOC还有一个另外的名字:“依赖注入 (DI=Dependency Injection)”  ,即由容器动态的将某种依赖关系注入到组件之中 

IOC/DI将以前由程序员实例化对象/赋值的工作交给了spring处理

4.如何使用Spring(5.0.1.RELEASE)?

   1)在pom.xml文件中引入spring-core、spring-context的jar支持

<!--spring-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>

   2)配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
           version="3.0">
<!--Web与Spring集成配置-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring.xml</param-value>
    </context-param>
<!--配置自定义监听器,
目的:1.读取context-param;
     2.完成Spring IOC容器的初始化,并将初始化完成的Spring容器添加到application -->
    <listener>
        <listener-class>com.zking.spring01.listener.SpringListener</listener-class>
    </listener>

(3.)Spring Bean 之id,class属性
        id:在容器中查找Bean的id(唯一、且不能以/开头)
        class:bean的完整类名(类的全路径名)

(4.)singleton(单例模式):在每个Spring IoC容器中一个bean定义对应一个对象实例 prototype(原型模式/多例模式):一个bean定义对应多个对象实例

5. 简单属性的配置:

   8+1+3
   8基础数据+String+3个sql
   java.util.Date
     java.sql.Date
     java.sql.Time
     java.sql.Timestamp
   通过<value>标签赋值即可

6. 复杂属性的配置:

   6.1 JavaBean
      ref bean=""
   6.2 List或数组
   6.3 Map
   6.4 Properties

7. 针对项目,配置文件路径的2种写法:

   ApplicationContext
   String path = "applicationContext.xml";
   String path = "classpath:applicationContext-*.xml";//src
   String[] path = new String[] { "applicationContext-a.xml", "applicationContext-b.xml" };//分模块开发

8.spring与web项目的集成:

WEB项目如何读取spring上下文
   通过监听器实现ServletContextListener
   contextConfigLocation:classpath:applicationContext-*.xml

   <!-- 配置SpringListener监听器的Spring配置文件路径 -->
   <context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath:spring.xml</param-value>
   </context-param>
   <!-- 配置SpringListener监听器 -->
   <listener>
	<listener-class>com.zking.spring01.util.SpringListener</listener-class>
   </listener>