您好,欢迎访问一九零五行业门户网

Spring框架是什么?Spring框架IOC容器的介绍

本篇文章给大家带来的内容是关于spring框架是什么?spring框架ioc容器的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
一、spring开源框架的简介
spring是一个开源框架,也是于2003 年兴起的一个轻量级的java 开发框架,由rod johnson 在其著作《expert one-on-one j2ee development and design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。
spring使用基本的javabean来完成以前只可能由ejb完成的事情。然而,spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何java应用都可以从spring中受益。 简单来说,spring是一个轻量级的控制反转(ioc)和面向切面(aop)的容器框架。
spring的基本框架主要包含六大模块:dao、orm、aop、jee、web、core。
spring dao:spring提供了对jdbc的操作支持:jdbctemplate模板工具类 。
spring orm:spring可以与orm框架整合。例如spring整合hibernate框架,其中spring还提供hibernatedaosupport工具类,简化了hibernate的操作 。
spring web:spring提供了对struts、springmvc的支持,支持web开发。与此同时spring自身也提供了基于mvc的解决方案 。
spring  aop:spring提供面向切面的编程,可以给某一层提供事务管理,例如在service层添加事物控制 。
spring   jee:j2ee开发规范的支持,例如ejb 。
spring core:提供ioc容器对象的创建和处理依赖对象关系 。
二、spring下ioc容器和di(依赖注入dependency injection)
  ioc容器:就是具有依赖注入功能的容器,是可以创建对象的容器,ioc容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。通常new一个实例,控制权由程序员控制,而控制反转是指new实例工作不由程序员来做而是交给spring容器来做。。在spring中beanfactory是ioc容器的实际代表者。
  di(依赖注入dependency injection) :在容器创建对象后,处理对象的依赖关系。
  依赖注入spring的注入方式:
set注入方式
静态工厂注入方式
构造方法注入方式
基于注解的方式
  1、set注入方式:
 控制层代码:
private orderserviceimp orderservice;    public void setorderservice(orderserviceimp orderservice) {       this.orderservice = orderservice;}
spring配置xml文件:其中配置声明orderaction类存在属性orderservice。程式运行时候,会将已经实例化的orderservice对象调用setorderservice方式注入。
<bean name="orderaction" class="com.pec.action.orderaction">        <property name="orderservice" ref="orderservice"></property></bean><bean name="orderservice" class="com.pec.service.imp.orderserviceimp"></bean>
2、构造器注入方式:
控制层代码:
private orderserviceimp orderservice;    public orderaction(orderserviceimp orderservice) {        this.orderservice = orderservice;    }
spring配置xml文件:
<bean name="orderaction" class="com.pec.action.orderaction">      <constructor-arg ref="orderservice"></constructor-arg></bean><bean name="orderservice" class="com.pec.service.imp.orderserviceimp"></bean>
3、基于注解的方式(推荐使用,比较便捷少配置)
控制层代码:
@autowired   //@resourceprivate orderserviceimp orderservice;
服务层代码:
@service(orderservice)public class orderserviceimp implements iorderservice {    @autowired    private javaordermdaoimp javaordermdao;    @autowired    private javaorderddaoimp javaorderddao;    @override    public list<javaordermlist> findorderm(ordersearch search) {        return javaordermdao.findjavaorderm(search);    }    @override    public list<javaorderdlist> findorderd(ordersearch search) {        return javaorderddao.findjavaorderd(search);    }}
dao层代码:
@repository(javaordermdao)public class javaordermdaoimp extends basehibernatedao<javaorderm, serializable> implements ijavaordermdao {...}
@repository(javaorderddao)public class javaorderddaoimp extendsbasehibernatedao<javaorderd, serializable> implements ijavaorderddao {...}
注意点:
  ⑴ 持久层dao层注解repository中规定了名称,在service层中声明名称必须一致。
  ⑵ 服务层service层注解service中规定了名称,在控制层中声明的名称必须一致。
  ⑶ 注解方式注入依赖注解:
@component         把对象加入ioc容器,对象引用名称是类名,第一个字母小写@component(“name”) 把指定名称的对象,加入ioc容器@repository        主要用于标识加入容器的对象是一个持久层的组件(类)@service           主要用于标识加入容器的对象是一个业务逻辑层的组件@controller        主要用于标识加入容器的对象是一个控制层的组件@resource          注入属性(di), 会从容器中找对象注入到@resource修饰的对象上@autowired         注入属性(di), 会从容器中找对象注入到@autowired修饰的对象上
⑷ 注解可以简化配置,提升开发效率,但是也不利于后期维护。
 注:@autowired与@resource的区别
以上就是spring框架是什么?spring框架ioc容器的介绍的详细内容。
其它类似信息

推荐信息