1.spring 在ssh 中所处的位置

struts 是web框架(jsp,action,actionform)

hibernate 是orm框架,处于数据持久层

spring 是容器框架,配置bean和管理bean之间的关系,其中 ioc(inverse of control) 即控制反转,和di (dependency injection) 依赖注入 是spring的核心。

2.开发一个简单spring项目的流程

a.引入开发spring项目所需的jar包: spring.jar(最小配置),日志包common-logging.jar

b.创建一个spring的核心配置文件 applicationContext.xml [hibernate有核心 hibernate.cfg.xml struts核心文件 struts-config.xml], 该文件一般放在src目录下,

该文件中引入 xsd文件 :可以从给出的案例(spring源代码包)中拷贝一份.

说明:

<!--
                  bean元素的作用就是,当框架加载的时候,容器就会自动创建一个bean的实例,  类似 UserService us = new UserService();
                  property元素的作用就是,创建实例后给实例的属性注入值, 类似 us.setName("spring"); 
           -->
    <bean id="userService" class="com.service.UserService">
        <property name="name">
            <value>spring</value>
        </property>
    </bean>

3.创建实体bean,核心部分代码

 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");  //得到容器对象

UserService us = (UserService) ac.getBean("userService"); //实例化bean

us.sayHello();

4.Ioc(inverse of control 控制反转)  和 Dj (dependency injection 依赖注入)

控制反转: 把创建和维护对象的权力从代码中转移到spring容器(applicationContext.xml)中

<bean id="userService" class="com.service.userServce">

<property name="name" vlaue="spring"/>

<property name="helloService" ref="helloService"/>

</bean>

<bean id="helloService" class="com.service.helloServce">

<property name="words" vlaue="hello"/>

</bean>

在这段配置中体现了spring的三个特点:

a.配置bean

b.注入属性

c.维护bean与bean之间的关系

使用时通过getBean(bean_id) 来获取对象实例。

在UserServce 类中 有这样一段代码:

.....

private HelloServce helloServce;

....

并为其创建get 和 set 方法。此时如果没有实例化 helloServce,在UserServce 类直接调用 helloServce对象引用中的方法,肯定是报错的。

通过在applicationContext.xml中配置上述代码后,则可以直接调用。这也正好体现了spring的特点所在。

spring的底层实现机制可以采用 dom4j 和 java的反射机制来实现,结合HashMap 来维护实例对象的关系。

spring实际上是一个容器框架,可以维护web层,业务层,dao层(持久层)的各个组件,

注:struts主要充当web层,接管jsp/action/表单等,主要体现在数据输入,数据处理以及数据的展示。有包含view以及control层。

        在mvc这个概念中,model层包含 业务层,dao层以及持久层。

说明:部分内容摘录自网络

初学spring(一)的更多相关文章

  1. 初学Spring有没有适合的书

    初学者之前没有阅读java框架源码的习惯.没有阅读过源码,知道整体流程么?知道依赖注入的概念么?知道aop么?知道其中用到了哪些设计模式么?再说了,如果一上手就是源码?难道你没有注意到Spring的类 ...

  2. 初学 Spring boot 报错 Whitelabel Error Page 404

    按照教程,写了个最简单的 HelloWorld,尼玛报错 -->Whitelabel Error Page 404. 网上99%都是项目结构不对,说什么 Application放在父级 pack ...

  3. 初学Spring

    Spring是当今最流行的框架,今天开始,dayday同学要正式开始学习Spring了,加油 以下是一个简单的应用Spring框架的java程序 src\dayday\HelloSpring.java ...

  4. 初学spring boot踩过的坑

    一.搭建spring boot环境 maven工程 pom文件内容 <project xmlns="http://maven.apache.org/POM/4.0.0" xm ...

  5. 记录初学Spring boot中使用GraphQL编写API的几种方式

    Spring boot+graphql 一.使用graphql-java-tools方式 <dependency> <groupId>com.graphql-java-kick ...

  6. 初学 spring

    1.spring 开发环境,包含eclipse https://spring.io/tools3/sts/all/

  7. 初学spring(二)

      1.spring推荐使用接口编程,配合di可以达到层与层之间解耦

  8. 初学spring之入门案列

    spring其实是一个很大的开源框架,而我学的就是spring framework,这只是spring其中的一小部分.有疑惑的可以去官网去看看,spring官网我就不提供了.一百度肯定有.和sprin ...

  9. 初学Spring的感觉

    1.使用接口 不同的类实现同一接口后都会变成同一类型的类.   spring作业1的思路 lab1: 建立一个有一个输出方法的接口类|并建一个英语类和一个数学类实现该接口.   这两个实现类都重写了那 ...

随机推荐

  1. HDU 6336.Problem E. Matrix from Arrays-子矩阵求和+规律+二维前缀和 (2018 Multi-University Training Contest 4 1005)

    6336.Problem E. Matrix from Arrays 不想解释了,直接官方题解: 队友写了博客,我是水的他的代码 ------>HDU 6336 子矩阵求和 至于为什么是4倍的, ...

  2. fmod()函数和modf()函数

    最近从博客上看到了一个fmod函数,结果又蹦出来一个modf函数 fmod()函数: 头文件:#include<math.h> C库函数... fmod()用来对浮点数进行取模(求余),原 ...

  3. HDU 1427 速算24点【数值型DFS】

    速算24点 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  4. lunux多线程编程

    1.进程与线程 1)用户空间角度: 进程:fork()创建进程,在创建时,重新申请了内存空间,copy了父进程的所有信息. 线程:pthread_create()创建进程时,只申请自己的栈空间. 2) ...

  5. 【bzoj1335】Radio Transmission

    给你一个字符串,它是由某个字符串不断自我连接形成的.但是这个字符串是不确定的,现在只想知道它的最短长度是多少. 因为这个字符串是不断自匹配形成的我们可以很容易的想到,除了第一个字符串外,从第二个字符串 ...

  6. noi 题库1.7字符串 第16至20题

    16:忽略大小写的字符串比较 一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到'\0'为止.如果全部字符 ...

  7. SPOJ NETADMIN - Smart Network Administrator(二分)(网络流)

    NETADMIN - Smart Network Administrator #max-flow The citizens of a small village are tired of being ...

  8. C++类的复习

    1.C++ 类的声明:class class_name{    private:        /*        *私有的数据和成员函数        *只能被本类中的成员函数引用,类外不能调用   ...

  9. 利用hsdis和JITWatch查看分析HotSpot JIT compiler生成的汇编代码

    http://blog.csdn.net/hengyunabc/article/details/26898657

  10. 手把手教你使用FineUI开发一个b/s结构的取送货管理信息系统系列博文索引

    近阶段接到一些b/s类型的软件项目,但是团队成员之前大部分没有这方面的开发经验,于是自己选择了一套目前网上比较容易上手的开发框架(FineUI),计划录制一套视频讲座,来讲解如何利用FineUI快速开 ...