理解Spring

Spring是开源中间件,广泛应用于java应用中。Spring借由IoC来实现对一整套开发工具箱的支持,他的每个组件都是可替换的。类似于主板上的器件,可以替换升级,以保证电脑的最优化。

IOC

Spring的核心机制是控制反转IoC(inversion of control),也就是依赖注入(DI)。所谓依赖注入简单讲就是创建被调用工作不必要调用者完成,而是将控制权转交给容器。平常在对象A调用对象B的时候,必须在程序中新建对象B,再传入对象A的方法中去。现在我们取消了这两者的亲密耦合关系,在运行中使用set方法,将B存入对象A的属性中。使这个程序保持了使用开放性(A调用新增的C等)和修改闭合性(增加C时不用修改A)。而Spring的作用在于其配置文件接管了我们的setter器方法,把我们需要依赖注入的东西(例如user.addFood(apple)),交给了xml配置文件来完成。

配置文件

Spring的配置文件applicationContext.xml文件,其中主要就是配置各种bean对象,给他们建立关系,下文配置为例,实际上是把orange代表的类com.spring.demo.Orange的实力作为参数传给了com.spring.demo.Man类实例,需要注意的是Man类实例里必须有setFood(Food food) 这个方法做依赖注入。


Spring的两种注入方式

Spring有两种注入方式,分别是上文配置文件中所述的属性注入和另一种叫做建构注入方式,建构注入方式需要的参数<constructor-arg ref="beanB" />而且有着和其父Bean类构造方法完全一致的注入顺序。


这就要求父类的构造方法有这样的结构

public Man(Food food) {
                  this.food =food;
}

Spring的新特性

Spring从2.5版本开始支持Annotation特性,新特性更灵活方便配置Bean信息。

业务逻辑的处理

在业务逻辑中,首先需要提取XML配置的信息。使用ClassPathXmlApplicationContext("xxx.xml")的方式,加载xml配置文件:

ApplicationContext ctx = new ClassPathXmlApplicationContext("config.xml");

UserV2 peter = (UserV2) ctx.getBean("peter");

其后业务逻辑部分使用peter即可。

Web.xml配置

web.xml文件作为web project的配置文件,负责项目初始化和参数配置信息。一开始需要设置springframework的主要工作类DispatcherServlet。这个类负责接受分发请求。我们需要给他设定优先启动,同时设置servlet-mapping来设定URL请求。


Web下Spring的VC配置文件

不同于其他java项目, WEB-INF目录下需要新建与初始类同名的配置文件[servlet-name]-servlet.xml配置文件(这里就是spring-servlet.xml),这个配置文件负责MVC中的V和C的配置。其中配置了控制器类C,视图类V和映射到该控制器的URL信息。这样我们的请求信息,经由设定控制器处理,转发到设定的视图显示。为了处理提交数据,需要建立POJO类来存储表单数据,在控制器类中对表单数据进行加载处理。同时在控制类中有个主要的方法ModelAndViewhandle方法,该方法返回一个附加跳转信息的ModelAndView用来处理跳转。

总体流程

在web方式下总体流程图如下:


一些其他事情

容器:其实就是把类委托给另一个类来管理。例如一个类A里有两个属性分别存储了B和C,A相对B和C来讲就是容器。

POJO:Plain Old Java Object,就是一个普通java类的意思,可以视为有一些属性,以及属性的getter和setter访问器的类。

AOP: Aspect-Oriented Programming,面向切面(方面)的编程。该模式为了减小模块之间的耦合度而生,其将处理流程划分成各种断面,数据流过这些断面,。

参考文献

1.              理解Spring设计模式http://bluedash.net/spaces/Web%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B3%EF%BC%8D%E7%90%86%E8%A7%A3Spring%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F

2.              Spring的简单使用 http://blog.csdn.net/gongqingkui/article/details/7997528

3.              理解Spring http://blog.csdn.net/chinayaoming/article/details/709160

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gongqingkui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值