初学spring(一)
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(一)的更多相关文章
- 初学Spring有没有适合的书
初学者之前没有阅读java框架源码的习惯.没有阅读过源码,知道整体流程么?知道依赖注入的概念么?知道aop么?知道其中用到了哪些设计模式么?再说了,如果一上手就是源码?难道你没有注意到Spring的类 ...
- 初学 Spring boot 报错 Whitelabel Error Page 404
按照教程,写了个最简单的 HelloWorld,尼玛报错 -->Whitelabel Error Page 404. 网上99%都是项目结构不对,说什么 Application放在父级 pack ...
- 初学Spring
Spring是当今最流行的框架,今天开始,dayday同学要正式开始学习Spring了,加油 以下是一个简单的应用Spring框架的java程序 src\dayday\HelloSpring.java ...
- 初学spring boot踩过的坑
一.搭建spring boot环境 maven工程 pom文件内容 <project xmlns="http://maven.apache.org/POM/4.0.0" xm ...
- 记录初学Spring boot中使用GraphQL编写API的几种方式
Spring boot+graphql 一.使用graphql-java-tools方式 <dependency> <groupId>com.graphql-java-kick ...
- 初学 spring
1.spring 开发环境,包含eclipse https://spring.io/tools3/sts/all/
- 初学spring(二)
1.spring推荐使用接口编程,配合di可以达到层与层之间解耦
- 初学spring之入门案列
spring其实是一个很大的开源框架,而我学的就是spring framework,这只是spring其中的一小部分.有疑惑的可以去官网去看看,spring官网我就不提供了.一百度肯定有.和sprin ...
- 初学Spring的感觉
1.使用接口 不同的类实现同一接口后都会变成同一类型的类. spring作业1的思路 lab1: 建立一个有一个输出方法的接口类|并建一个英语类和一个数学类实现该接口. 这两个实现类都重写了那 ...
随机推荐
- 计蒜客 30990.An Olympian Math Problem-数学公式题 (ACM-ICPC 2018 南京赛区网络预赛 A)
A. An Olympian Math Problem 54.28% 1000ms 65536K Alice, a student of grade 66, is thinking about a ...
- 51nod 1459 迷宫游戏【最短路拓展】
1459 迷宫游戏 基准时间限制:1 秒 空间限制:131072 KB 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数.还有若干双向道路连 ...
- 数据排序 第一讲( 各种排序方法 结合noi题库1.10)
选择排序 1.基本思想:每一趟从待排序的数据元素选出最小或最大的一个元素,数按序排放在待排序的元素的最前端,直到全部待排序的元素排完 2.基本代码 px(int r[]) { ;i<n;i++) ...
- 【数论】【暴力】bzoj4052 [Cerc2013]Magical GCD
考虑向一个集合里添加一个数,它们的gcd要么不变,要么变成原gcd的一个约数.因此不同的gcd只有log个. 所以对于每个位置,维护一个表,存储从这个位置向前所有的不同的gcd及其初始位置,然后暴力更 ...
- 【点分治】hdu5016 Mart Master II
点分治好题. ①手动开栈. ②dp预处理每个点被哪个市场控制,及其距离是多少,记作pair<int,int>数组p. ③设dis[u].first为u到重心s的距离,dis[u].seco ...
- 1.4(Mybatis学习笔记)关联映射
一.一对一 mybatis处理一对一主要通过<resultMap>中的<association>元素来处理. <association>元素主要使用方方式有两种: ...
- new beginning
新的一年开始. BLOG搬到CNBLOG. 往事太匆匆, 一切终成风. 他日再相逢, 依旧笑语中. -----AT.Y
- java的classpath和path理解
1)classpath即是类路径的意思,后缀为.java的源程序编译成功之后会生成后缀为.class的类文件.classpath与import关键字是相关的,程序编译的时候,遇到import关键字,编 ...
- 踩的ssh坑
先说下事情的起因,手贱删掉了~/.ssh下的所有文件,包括authorized_keys,id_rsa,id_rsa.pub,以及known_hosts.其实,这四个文件本来就是没有的,id_rsa和 ...
- Scala实战高手****第2课:Scala零基础实战入门的第一堂课及如何成为Scala高手
val声明的不可变的战略意义:1.函数式编程中要求值不可变,val天然符合这一特性:2.在分布式系统中,一般都要求值不可变,这样才能够要求分布式系统的设计和实现,同时拥有更高的效率,val声明的内容都 ...