Spring筆記
Spring
对于开发者来说,开发者使用Spring框架所做的主要是两件事:1、开发Bean;2、配置bean。对于Spring框架来说,它要做的,就是根据配置文件来创建Bean实力,并调用Bean实例的方法完成“依赖注入”—这就是所谓的IoC的本质。这就要求开发者在使用Spring框架是,眼中看到的是“XML配置”,心中想的是“java代码”。后面学习时,要尽可能的理解“每段XML配置”在底层所对应的“java代码调用”。
问题:1、什么是Bean?什么是javabeen?(好好思考理解)
Spring的核心机制:IoC(控制反转)是Spring框架的核心。依赖注入(java应用大多数都是由一些互相协作的对象构成的,sprin把这种互相协作关系称为依赖关系,假如A组件调用了B组件的方法,我们称A组件依赖于B组件)
所谓的依赖注入,是指程序运行过程中,如果需要另一个对象协作(调用它的方法,访问它的属性时,无需再代码中创建被调用者,而是依赖外部容器的注入。Spring的依赖注入对调用者和被调用者机会没有任何要求,完成对POJO之间依赖关系的管理)
依赖注入通常有如下
1、设值注入:IoC容器使用属性的setter方法来注入被依赖实例。 2、构造注入:IoC容器使用构造器来注入被依赖实例。
理解implements和extends
implements一般是实现接口。
extends 是继承类。
接口一般是只有方法声明没有定义的,
那么java特别指出实现接口是有道理的,因为继承就有感觉是父类已经实现了方法,而接口恰恰是没有实现自己的方法,仅仅有声明,也就是一个方法头没有方法体。因此你可以理解成接口是子类实现其方法声明而不是继承其方法。
但是一般类的方法可以有方法体,那么叫继承比较合理。
引入包可以使用里面非接口的一切实现的类。那么是不是实现接口,这个你自己决定,如果想用到那么你不是实现,是不能调用这个接口的,因为接口就是个规范,是个没方法体的方法声明集合。我来举个例子吧:接口可以比作协议,比如我说 一个协议是“杀人”那么这个接口你可以用 砍刀去实现,至于怎么杀砍刀可以去实现,当然你也可以用抢来实现杀人接口,但是你不能用杀人接口去杀人,因为杀人接口只不过是个功能说明,是个协议,具体怎么干,还要看他的实现类。
那么一个包里面如果有接口,你可以不实现。这个不影响你使用其他类。
Spring整合Struts2
Spring提供了一个ContextLoaderListener,该监听器类实现了ServletContextListener接口。该类可以作为Listener使用,它会在创建时自动查找WEB-INF/下的applicationContext.xml文件,因此,如果只有一个配置文件,并且文件名为applicationContext.xml,则只需在web.xml文件中增加如下配置便可。
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListene</listener-class>
</listener>
如果有多个配置文件需要载入,则考虑使用<context-param…>元素来确定配置文件名。ContextLoaderListener加载时,会查找名为contextCcofigLocation的初始化参数。因此,配置<context-param…/>是应指定参数名为contextConfigLoacation。
带多个配置文件的web.xml文件如下:
<?xml-app xmls=”http//java.sun.com/xml/ns/javaee”
Xmls=”http://www.w3.org/2001/XMLSchema-instance”
Xsi:schemaLoaction=http://java.sun.com//xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app.xsd”version=”3.0”>
<!—指定多个配置文件-->
<context-param>
<!—参数名为ContextConfigLocation-->
<param-name>contextConfigLocation</param-name>
<!—多个配置文件之间以“,”隔开-->
<param-value>/WEB-INF/daoContext.xml,/WEB-INF/applicationContext.xml
</param-value>
<!—使用ConfigLoaderListener初始化Spring容器-->