SpringMVC学习指南-Spring框架

Spring框架主要使用依赖注入。实际上,很多牛叉的框架如Google的Guice都是使用依赖注入。

------------------------------------------------------依赖注入和IOC容器--------------------------------------------------------

1.依赖注入

有两个组件A和B,其中A中的一个方法使用到了B中的方法:

public classs A{
  public void MethodA{
    B b= ...//获取B的一个实例
    b.MethodB(); 
  }        
}

1)要想使用B中的方法,必须首先获取B的一个实例,如果B是一个具体的类,则可以通过new获取到B的实例。但是如果B是一个接口,这个接口有多个实现,此时我们只能使用这个接口的一个实现,因此降低了A的重用性。

2)依赖注入接管对象的创建工作,并将该对象的引用注入到需要该对象的组件(也即对象)。上例,依赖注入框架会创建对象A和对象B,并将对象B注入到对象A中,这也对象A就可以使用对象B中方法。

3)框架进行依赖注入的前提是这些有依赖其他对象的对象中,定义了set方法或者构造函数。

set方法:框架会去调用这个set方法,将这个B对象注入到A对象。

public classs A{
  private B b;
  public void MethodA{     b.MethodB();   }   public void setB(B b){     this.b=b;   } }

构造函数:框架会去首先创建B对象,然后创建A对象。

public classs A{
  private B b;
 
  public A(B b){
    this.b=b;
  }    
   
  public void MethodA{
    b.MethodB(); 
  }    
}

2.IOC容器

Spring通过一个IOC容器可以很完美的管理Java对象依赖关系。程序员无需知道Spring框架的存在,不需要引入任何Spring类型。

3.注解方式

Spring从2.5版本后即可以使用@Autowired注解支持field方式的依赖注入,但有一个问题,程序员必须依赖于Spring的org.springframework.beans.factory.annotation.Autowired,这样无法直接迁移到另一个IOC容器中。

使用Spring,程序几乎将所有重要对象的创建工作交给Spring,并管理配置如何注入依赖。Spring支持两种方式,分别是XML配置和注解。程序中需要一个ApplicationContext对象,代表一个Spring的IOC容器,这个接口有多个实现。一般对于Spring MVC应用来

说,不需要显示创建这个接口的对象,我们可以通过一个SpringServlet来处理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">
...
</beans>

如果需要更强的Spring配置能力,可以在schemalocation属性中添加相应的schema。配置文件可以是一份,也可以分解成多分,以便支持模块化配置。ApplicationContext的实现类支持读取多份配置文件。也可以通过创建一个主配置文件,将该文件导入到其他配置文件,以便复用。

<?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">
    <import resource="config1.xml"/>
    <import resource="other.xml"/>
...
</beans>

  

  

 

原文地址:https://www.cnblogs.com/striver-zhu/p/5891362.html