spring

-------------------------------------------------------------------------------------------------------------------------------------

spring简介:

struts是web层的框架,hibernate是持久层框架,spring是综合层。spring是个轻量级框架,不依赖于与J2EE容器,在J2SE环境下也能使用。

实际上的四层架构。

1.表现层:

a.对request和response的处理。

b.对数据 的显示。

c.非业务逻辑的验证。

d.异常的处理。

2.持久层:

a.ORM

b.提供面向对象的查询语言。

3.域层:业务逻辑的一部分。

4.服务层:

a.给业务逻辑暴露服务。

b.容器级别的服务怎么去实现。

--------------------------------------------------------------------------------------------------------------------------------------

spring的作用:

1.创建和管理业务逻辑对象(javabean)对象

2.管理业务逻辑之间的依赖关系。

3.让业务逻辑层中的javabean与集成层进行结合。

4.让业务逻辑层与表现层进行结合。

通过依赖注入来实现对象的关联关系的建立,降低了耦合度,支持了测试驱动开发;没有J2EE照样可以使用声明式事务,声明式事务不再依赖于容器;通过spring和其他框架集成,使得使用其他框架变得简单。

--------------------------------------------------------------------------------------------------------------------------------------

spring的特点:

1.在sprring框架中,把check类型的异常全部转化为uncheck类型,因为spring认为try--catch代码会污染业务逻辑。checked还是unchecked是针对编译器说的。

2.spring框架包含了很多的模块,我们可以使用spring提供的一个或者几个模块。spring可以定制服务,每种服务都是模块化的而且可伸缩的。

3.采用spring开发应用非常好,而且开发出来的东西是可重用的。

--------------------------------------------------------------------------------------------------------------------------------------

spring框架的组成

1.spring core:提供了IOC容器,是一个核心模块,其它所有模块以此为基础,提供了管理javabean对象和维护对象之间的依赖关系的功能。

2.spring aop:提供了面向切面编程的功能,有了IOC,才可以使用声明式事务。

3.spring dao:对jdbc做了轻量级的封装,简化jdbc编程。----->jdbcTemplate

4.spring context:是核心模块的一个扩展,提供了比核心模块core更多的功能,提供了更强大的功能。

5.spring orm:提供了集成持久层框架的能力,提供了跟其它框架集成的功能。

6.spring web:提供了web层框架的能力,提供了跟其他web框架的功能。

7.spring web mvc:是一个基于mvc的web框架的实现。

--------------------------------------------------------------------------------------------------------------------------------------

IOC控制反转

依赖注入是控制反转的一种方式,依赖注入有三种方式:接口注入、构造器注入、setter方法注入。

1.setter方法注入

      如果在配置一个bean(bean类是标准的javaBean),采用的注入方式是setter注入,那么spring容器在创建bean时首先调用bean的无参构造函数,然后调用bean的setter方法,把它所依赖的对象注入进来。

<beans>

<bean name="example" class="com.spring.ioc.ExampleBean">

<property name="anotherBean">

<ref bean="anotherBean"/>

</property>

<property name="value">

    <value>4321</value>

</property>

</bean>

<bean name="anotherBean" class="com.spring.ioc.AnotherBean">

<property>

<value>2008</value>

</property>

</bean>

</beans>

2.构造器注入

      如果在配置一个bean时,采用的注入方式是构造器注入,那么spring容器在创建bean时调用有参的构造器,并且把它所依赖的对象注入进来。

<beans>

<bean name="example" class="com.spring.ioc.ExampleBean">

<constructor-arg index="0">

<ref bean="anotherBean"/>

</constructor-arg>

<property name="1">

    <value>4321</value>

</property>

</bean>

<bean name="anotherBean" class="com.spring.ioc.AnotherBean">

<constructor-arg>

<value>2008</value>

</constructor-arg>

</bean>

</beans>

注:如果配置一个bean时,既声明了构造器注入,又声明了setter注入,那么spring容器在创建bean时首先调用有参构造器进行注入,然后调用setter方法注入。

三种不同类型的数据注入的声明方式

1.基本数据类型<value></value>

2.其它的bean对象<ref bean="otherBean">

3.集合类型<list></list>,<map></map><set></set><props></props>

-----------------------------------------------------------------------------------------------------------------------------------

在spring中创建非javabean类型的对象有三种方式:

1.静态工厂方法

a.创建一个工厂类,提供一个静态的工厂方法。

b.配置一个产品的bean class为工厂类,另外还要指定工厂方法的名字。

如下:<bean name="connection" class="***" factory-method="getConnection"><bean>

其中getConnection是"***"中的静态方法,返回值是一个需要的对象。

2.实例工厂方法

a.创建一个工厂类,提供一个非静态的工厂方法的名字。

b.配置一个工厂的bean

c.配置一个产品的bean,指定工厂bean的名字,以及工厂方法的名字。

如下:<bean name="factory" class="***"/>

<bean name="beanId" factory-bean="factory" factory-method="getConnection"></bean>

其中getConnection是"***"中的非静态方法,返回值是一个需要的对象。

3.提供工厂类,实现factoryBean接口。

配置一个产品的bean默认为singleton;

---------------------------------------------------------------------------------------------------------------------------------

singletons:spring中的bean对象是唯一的,只创建一次。

prototypes:只要使用一次getBean,就创建一个bean对象。

在BeanFactory中的bean对象默认为singleton。

在BeanFactory中的bean对象是延迟创建的。

---------------------------------------------------------------------------------------------------------------------------------

bean的生命周期

创建过程:

1.容器寻找bean的定义信息并且将其实例化。

2.使用依赖注入,Spring按照bean定义信息完成依赖注入。

3.如果bean实现了BeanNameAware接口,工厂调用setBeanName方法。

4.如果bean实现了BeanFactoryAware接口,工厂调用setBeanFactory方法传入工厂本身。

5.如果bean实现了InitializingBean接口,则调用afterPropertiesSet方法。

6.如果bean指定了init-method方法,它将被调用。

销毁过程:

1.如果Bean实现了DisposableBean接口,则调用destory接口。

2.如果Bean实现了destory-method,则调用它。

---------------------------------------------------------------------------------------------------------------------------------

applicationContext

1.对BeanFactory实现了功能上的扩展。

2.预先实例化单例的Bean

3.提供对BeanPostProcessor以及对BeanFactoryProcessor的注册和检查。

4.支持嵌套的Context。

5.提供事件处理机制。

6.支持国际化。

---------------------------------------------------------------------------------------------------------------------------------

Aop的一些概念

1.关注点:

是指一个系统需要关注的一些主要问题,可以分成两大类,核心关注点和横切关注点。

其中业务关注点是指业务逻辑。

2.横切关注点:

是指系统级别的服务,实现代码散落在多个类或者方法中的关注点。比如日志、事务、安全。

3.方面(abject)

方面就是对横切关注点的模块化。把那些散落在各处的用于实现这个关注点的代码整到一处。

4.连接点

就是整个程序运行过程中的某一点。

一般是指:方法调用;属性访问;异常抛出。

5.增强=====

在特定连接点执行的动作就是增强。

      1.前增强:就是在目标对象方法调用之前执行的动作。

      2.后增强:就是在目标对象方法调用之后执行的动作。

      3.环绕增强:就是在目标对象方法调用前后都会执行的动作。

      4.抛出增强:就是在目标对象方法中抛出异常之后执行的动作。

6.切入点:一组连接点的总称。

7.目标对象:被拦截器拦截的对象。

8.代理对象:目标对象增强一些额外功能之后产生的对象,称为代理对象。

9.织入:就是给目标对象加上额外功能产生代理对象的整个过程称为织入。

----------------------------------------------------------------------------------------------------------------------------------

Aop编程的过程:

1.定义目标对象

2.定义拦截器

3.定义代理对象

----------------------------------------------------------------------------------------------------------------------------------

spring中的DAO

1.使用jdbc

配置DataSource

配置一个 DataSource的Bean,(1)类型为org.apache.commons.dbcp.BasicDataSource.然后给他指定一些参数。

(2)类型为org.springFramework.jndi.JndiObjectFactoryBean.这个类型是实现FactoryBean接口的,生产的产品为通过jndi查找到的对象。

2.使用hibernate

配置SessionFactory

配置一个SessionFactory的bean

类型为org.springFramework.orm.hibernate3.LocalSessionFactoryBean

或者类型为org.springFramework.jndi.JndiObjectFactoryBean.这个类型是实现FactoryBean接口的, 生产的产品为通过jndi查找到的对象。

-----------------------------------------------------------------------------------------------------------------------------------

spring中的web

spring跟struts集成使用

1.在web.xml中配置一个监听器,用来初始化spring上下文;它会创建ApplicationContext对象ac,并且把ac放到ServletContext中。

2.在struts-config.xml文件中配置一个action,类型为spring框架提供的一个类型。主要工作是从ServletContext中取到ApplicationContext对象ac。然后从ac中找到名字为action path的那个bean,并且调用这个bean的execute方法。

3.在spring的配置文件中配置一个bean,类型为真正的action的类型,bean的名字必须跟struts-config.xml中配置的action的path一致。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值