• 技术文章 >Java >java教程

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

    不言不言2018-10-19 16:08:34转载2620
    本篇文章给大家带来的内容是关于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。

      2419508943-5bc98809a74b6_articlex.jpg

    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   //@Resource
    private 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容器的介绍的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault思否,如有侵犯,请联系admin@php.cn删除
    专题推荐:容器 ioc java
    上一篇:Java中适配器模式(Adapter)是什么? 适配器模式(详解) 下一篇:java线程同步的实现方法详解(附代码)

    相关文章推荐

    • 基于Java的Spring框架来操作FreeMarker模板的示例• spring框架中多数据源创建加载并且实现动态切换的配置实例代码• Spring框架第二篇之Bean的装配• Java框架中spring框架的优点 • 适合小白的java学习的框架?spring框架学习教程

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网