• spring学习(1)


    struts是web框架(jsp/action/action)

    hibernate是orm框架,处于持久层。

    spring是一个框架,是容器框架。用于配置bean,并维护bean之间关系的一种框架。

    spring中有一个非常重要的概念:bean(是java中的任何一种对象,javabean/service/action/数据源.../dao,ioc(控制反转 inverse of control) di(dependecy injection 依赖注入)。

     spring框架,它可以管理web层,业务层,dao层持久层。所以它叫容器框架。

    该spring可以配置各个层的组件(bean),并且维护各个bean之间的关系。

    快速入门

    spring是开源框架

    开发一个spring项目

    1.引入spring的开发包(最小配置spring.jar 该包把常用的jar都包括,还要写日志包 common-logging.jar)

    2.创建spring的一个核心文件,applicationContext.xml,[hibernate 有核心 hibernate.cfg.xml 

    structs核心文件 structs-config.xml,该文件一般放在src目录下,该文件中引入xsd文件:可以从给出的案例中拷贝一份即可。

    3.配置bean

    4.在Test.java中,我们怎么使用

    ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
            UserService us = (UserService)ac.getBean("userService");
            us.sayHello();

    spring框架原理图(spring框架什么时候被加载,spring中配置的bean,

    ClassPathXmlApplicationContext("");这句话非常重要。

    1.当ClassPathXmlApplicationContext("")被执行的时候,我们的spring容器对象就被创建,同时applicationContext.xml中配置的bean就会被创建(内存[HashMap/HashTable ])

    2.UserService us=(UserService)ac.getBean("userService);us.sayHello();

    us其实就是bean中id为userService。

    3.

    <bean id="userService" class="com.service.UserService">
    <!-- 这里就体现出注入的概念 -->
    <property name="name">
    <value>韩顺平</value>
    </property>
    <!-- 在userService中引用bybService bean -->
    <property name="bybService" ref="bybService"/>

    </bean>

    4.在Test.java中,我们怎么使用

    //我们现在使用spring来完成上面的任务
            //1.得到spring的applicationContext对象(容器对象)
            //applicationContext对象就对应applicationContext.xml
            //ac就是容器
            ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
            UserService us = (UserService)ac.getBean("userService");
            us.sayHello();

    5.细节讨论?

    传统的方法和使用spring的方法

    5.1 使用spring,没有new 对象,我们把创建对象的任务交给spring框架 

    深入探讨:(dom4j+java反射机制)

    userService = Class.forName("com.service.UserService");

    userService.setName("韩顺平");

    bybService = Class.forName("com.service.BybService");

    bybService.setName("小明");

    userService.setByeService(bybService);

    applicationContext=new HashMap();

    applicationContext.put("userService",userService);

    applicationContext.put("byeService",bybService);

    5.2 spring的运行原理图:

    5.3我们再看spring

    对上面案例总结:

    spring实际上是一个容器框架,可以配置各种bean,并且可以维护bean与bean的关系,当我们需要使用某个bean的时候,我们可以getBean(id),使用即可。

    spring是一个容器框架,它可以接管web层,持久层,dao层,可以配置各种bean,并且可以维护bean与bean的关系,当我们需要使用某个bean的时候,我们可以getBean(id),使用即可。

    ioc是什么?

    答:ioc(inverse of controll)控制反转:所谓控制反转就是把创建对象(bean),和维护对象(bean)的关系的权利从程序中转移到spring的容器文件(applicationContext.xml)中,而程序本身不再维护了。

    DI是什么?

    答:di(dependency injection)依赖注入:实际上di和ioc是同一个概念,spring的设计者认为di更能准确表示spring核心技术。

    一、IOC介绍

    1.IOC是控制反转。

    2.传统资源查找方式:要求组件向容器发起请求,查找资源作为回应,容器适时返回资源。

    3.IOC查找方式:容器会主动将资源提供给它所管理的组件,组件只需要选择一个合适的方式来接收资源,也被称为查找的被动式。

    4.创建对象实例的控制权从代码控制剥离到IOC容器控制(之前的写法,由程序代码直接操控使用new关键字),实际就是你在xml文件控制,控制权的转移是所谓反转,侧重于原理。

    二、DI介绍

    1.DI是依赖注入

    2.IOC的另一种表达方式:组件以一些预先定义好的方式(如:setter方法)接收来自容器的资源注入。

    3.相对于IOC而言,这种表述更加直接。

    4.创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。

    属性注入(最常用)

    1.通过set方法注入Bean的属性值或依赖的对象。

    2.name属性:制定Bean属性set方法后的属性名。

    3.value属性值:可以使(value)子节点指定属性值。

    构造器注入

    1.通过构造器注入Bean属性值或依赖对象,它保证Bean实例在实例化后可以使用。

    2.构造器注入在<constractor-arg>一样。

    三、区别

    1.它们是spring核心思想的不同方面的描述。

    2.依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同。

    依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;

    而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。

     学框架,就是学配置。

    学习框架,最重要的就是学习配置。

    把ApplicationContext做成一个单例的。

    web层

    structs充当web层,接管jsp/action/表单

    主要体现出mvc的数据输入,数据的处理和数据的显示分离

    model层是一个很大的概念,model层和持久层、业务层的关系?

    model层和业务层,model层(业务层+dao层+持久层),mvc中去掉v和c都是model.

    这里强调一下,在一个项目中不一定全部有,可以根据实际情况选择。

    hibernate(orm框架),持久层,体现oop,主要解决 关系模型和对象模型之间的阻抗。

    spring框架,它可以管理web层,业务层,dao层,持久层,该spring可以配置各个层的组件(bean),并且维护各个bean之间的关系

    配置各种bean

    web层 action解决action单例问题

    业务层 service/domain/dao

    持久层:数据源

  • 相关阅读:
    62. Unique Paths
    120. Triangle
    EBS预置文件作用收集整理
    ORA-20002: [WF_NO_USER] NAME=<name> ORIG_SYSTEM=NULL ORIG_SYSTEM_ID=NULL
    Oracle定义DES加密解密及MD5加密函数
    EBS获取附件URL
    Oracle EBS标准错误信息如何追踪 (Debug)
    更改EBS APPS 密码流程
    Oracle之物化视图
    Oracle EBS打补丁
  • 原文地址:https://www.cnblogs.com/liaoxiaolao/p/9880255.html
Copyright © 2020-2023  润新知