Spring初级学习!!!

来源:互联网 发布:centos 7 更改ftp目录 编辑:程序博客网 时间:2024/06/01 22:35

一、核心容器
(1)Core和beans模块:这两个模块提供例如框架的基础功能部分,包括IOC和依赖注入的特性
(2).Context模型:该模块建立在Core和beans模型之上:通过它可以访问被框架管理的对象
(3).Expression Lanuage(表达式语言):该模块提供了一个强大的表达式语言来查询和处理对象,在运行的时候,它是同一表达式的扩展
二、数据访问/集成
(1).JDBC
(2).ORM
(3).OXM
(4)JMS:该模块包含了产生好人消费消息放入功能
(5).Transactions:事务模块提供了程序化和声明性的事务管理,这个功能可以为所有的类和POJO使用。
三、Web
(1).web
(2).Servlet
(3).Portlet
(4).Struts
四、AOP框架
AOP联盟是一个开源项目,它的目标是通过定义一组共同的接口和组件来促进AOP的使用以及不同的AOP实现之间的互用性。
五、Test
该模块支持测试Spring的组件,通过使用JUnit和TestNG提供了同步装载SpringApplicationContexts和缓冲这些上下文环境,它也提供了Mock对象,这些对象可以用来独立测试代码。

工厂模式

工厂模式根据调用数据返回某个类的一个实例,此类可能是多个类的某一个类,通常,这些类满足共同的规则(接口)或者父类。调用者只关心工厂生产的实例 是否满足某种规范,即实现了某个接口;是否可供自己正常调用,三个角色(1).Creator:工厂类角色,工厂模式的核心,含有与应用紧密相关的商业逻辑,工厂类在客户端的直接调用下创建产品对象,往往有一个具体类实现。(2).Product:又称做抽象产品角色,担任这个角色的类是有工厂模式所创建的对象的父类,或者它们公共拥有的接口(3).Concrete Product角色:又称为具体产品角色。工厂模式所创建的任何对象都是这个角色的实例,具体产品角色有一个具体的java类实现

控制反转(IoC)
实现方式:(1).依赖查找:容器提供回调接口和上下文环境给组件
(2).依赖注入:组件不做定位注入,只是提供普通的Java方法让容器去决定依赖关系
①.接口注入; ②.设值注入;③.构造注入
设值注入必须满足的要求:
1).Bean类必须提供一个默认的构造方法
2).Bean类必须为需要注入的类提供对应的setXxx()方法
构造注入:通过构造方法来完成依赖注入,传的各个参数都是受管Bean依赖的对象
几种方式:
1).按类型匹配入参:通过constructor-arg标签的type属性参数类型,为String提供了判断配置项的构造方法
2).按索引匹配入参:当不确定参数类型而确定参数个数时,则可以使用入参索引的方式进行匹配,如:

<bean id="anmial class="com.mxl.models.Animal">    <constructor-arg index="0"><value>Dog</value></constructor-arg>    <constructor-arg index="1"><value>3</value></constructor-arg></bean>
3).联合使用类型和索引匹配:在指定参数类型的同时,也指定参数的索引值

装配Bean
BeanFactory:是一个通用放入工厂,可以创建和管理各种类的对象。它实际上是实例化,配置和管理众多Bean的容器主要方法是getBean(String beanName),用来返回特定名称的Bean,其他接口;
(1).ListableBeanFactory:该接口定义了访问容器中的Bean基本信息的若干方法
(2).ConfigurableBeanFactory:一个重要的接口,增强了IoC容器的可定制性,它定义了设置类装载器。属性编辑器以及容器初始化后置处理器的方法。
(3).HierarchicalBeanFactory:父子级联IoC接口,子容器可通过接口访问父容器
(4).AutowireCapableBeanFactory:定义了将容器中的Bean按照某种规则进行自动装配的方法。
(5).SingletonBeanRegistry:定义了允许在运行期间向容器注册单实例Bean的方法
(6).beanDefinitionRegistry:向容器提供手工注册BeanDefinition对象的方法

从文件系统资源实例化BeanFactory
使用这种方式时,配置文件beans.xml的位置可以不固定
如:
Spring会自动在项目根目录查找

Resource res = new FileSystemResource("beans.xml");//由beans.xml生成Resource实例BeanFactory factory = new XmlBeanFactory(res);//生成BeanFactory实例如果不在根目录(假如在src目录)Resource res = new FileSystemResource("src/beans.xml");//由beans.xml生成Resource实例如果存储在应用以外(如:E 盘)Resource res = new FileSystemResource("E:\\beans.xml");

从CLASSPATH下的资源实例化BeanFactory
使用这种方法,配置文件的存储位置相对是固定的,例如:beans2.xml存储在项目的classpath根目录下(项目名称/src/beans2.xml)

Resource resClspath = new ClassPathResource("beans2.xml");BeanFactory factory = new XmlBeanFactory(resClspath );//如果存储在classpath下的mxl目录下Resource resClspath = new ClassPathResource("mxl\\beans2.xml");    注意:Myeclipse在运行过程中,会自动把src目录下的beans2.xml文件复制到项目的WEB-INF/classes目录下;对于第二种方式;则会复制到WEB-INF/classes/mxl下

Resource
用来装载各种资源,包括配置文件资源,国际化属性文件资源等,其具体实现类有:
(1).ByteArrayResource:二进制数组表示的资源,可以在内存中通过程序构造
(2).ClassPathResource:类路径下的资源,资源相对于类路径的方式表示;
(3).FileSystemResource:文件系统资源,资源文件系统路径的方式表示;
(4).InputStreamResource:以输入流返回表示的资源;
(5).ServletContextResource:访问Web容器上下文中资源而设计的类,负责从web应用跟目录中加载资源
(6).URLResource:封装了java.netURL,使用户能够访问任何可以通过URL表示的资源
使用ApplicationContext从classpath下的xml文件实例化Bean

    ApplicationContext appContext = new ClassPathXMLApplicationContext("beans2.xml");    BeanFactory factor = (BeanFactory)appContext;//直接生成类工厂实例
0 0