微信公众号:compassblog

欢迎关注、转发,互相学习,共同进步!

有任何问题,请后台留言联系!

1、前言

前面更新过几篇关于 Struts2 框架和 Hibernate 框架的文章,但鉴于这两种框架在今天的主流开发中已经很少用了,所以关于这两种框架的更新权当兴趣,有时间也还会更新的。现在主流开发中代替这两个框架的是 SpringMVC 和 MyBatis 等等,接下来主要精力集中于 Spring、SpringMVC、Spring Boot 等等,特别是 Spring Boot 框架,当然肯定也会有其他方面的内容,知无不写,写无不尽。

2、Spring 框架概述

(1)、Spring 框架在三层架构中的位置

Spring 框架在三层架构中的位置在【【SSH框架】之Hibernate系列(一)】这篇文章中已经提到过,主要描述与下图:

(2)、Spring 是什么

Spring 是一个轻量级的 Java 开源框架,兴起于2003年,它分层架构的特点为 J2EE 应用程序开发提供集成的框架。Spring 的核心是控制反转(IOC)和面向切面(AOP),是一个一站式的框架。

(3)、Spring 框架的优势与功能(一站式)

  • Spring 相当于一个容器,可以将所有对象创建和依赖关系维护,交给 Spring 管理 
    AOP 编程的支持,容器中装什么对象就有什么功能。

  • Spring 提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能声明式事务的支持只需要通过配置就可以完成对事务的管理,而无需手动编程,使得程序的测试更为方便。

  • Spring 不仅不排斥各种优秀的开源框架,如:Struts、Hibernate、MyBatis等,还能帮其他框架管理对象,降低 JavaEE API 的使用难度。

  • Spring 对 JavaEE 中的 API 如 JDBC、JavaMail等提供了封装,使这些 API 应用难度大大降低。

  • Spring 支持 JUnit 测试支持,可以通过注解方便的测试 Spring 程序方便集成各种优秀框架。

3、搭建 Spring 开发环境并完成第一个测试实例

(1)、新建一个 web 项目,导入 Spring 所需要的基本包,如下图所示:

(2)、创建一个 Bean 对象,代码如下:

package com.spring.bean;

public class Student {
   //基本属性
   private String name; //姓名
   private int age;    //年龄
   private String grade;   //年级
   private String course;  //科目
   private int rank;   //排名    //setter和getter方法
   public String getName() {
       return name;
   }
   public void setName(String name) {
       this.name = name;
   }
   public int getAge() {
       return age;
   }
   public void setAge(int age) {
       this.age = age;
   }
   public String getGrade() {
       return grade;
   }
   public void setGrade(String grade) {
       this.grade = grade;
   }
   public String getCourse() {
       return course;
   }
   public void setCourse(String course) {
       this.course = course;
   }
   public int getRank() {
       return rank;
   }
   public void setRank(int rank) {
       this.rank = rank;
   } }

(3)、在 src 下新建配置文件 applicationContext.xml,将注册对象写入容器,代码如下:

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">    <!-- 将User对象交给spring容器管理 -->
   <bean  name="stu" class="com.spring.bean.Student" ></bean> </beans>

(4)、书写测试类 TestDemo.java,代码如下:

package com.spring.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.spring.bean.Student; public class TestDemo {    @Test
   public void test(){
       // 创建容器对象
       ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");        // 向容器获取user对象
       Student student = (Student) ac.getBean("stu");        //3打印stu对象
       System.out.println(student);
   }
}

(5)、使用 JUnit4 进行测试,结果如下图:

本项目运行环境:jdk1.7

4、Spring 配置详解

<!-- Bean元素:使用该元素描述需要spring容器管理的对象
           class属性:被管理对象的完整类名.
           name属性:给被管理的对象起个名字.获得对象时根据该名称获得对象.  
                   可以重复.可以使用特殊字符.
           id属性: 与name属性一模一样.
                   名称不可重复.不能使用特殊字符.
           结论: 尽量使用name属性.
-->
<bean  name="stu" class="com.spring.bean.Student" ></bean>
<!--
可以通过import属性导入其他spring配置文件
<import resource="路径/*.xml"/>
-->

5、Spring 框架的思想

(1)、IOC:Inverse Of Control,即控制反转,将对象创建的方式交给了 Spring 容器;

(2)、DI:Dependency Injection,即依赖注入,IOC 的实现需要 DI 支持。

6、Spring 属性注入

(1)、set方法注入:

<bean  name="stu" class="com.spring.bean.Student" >
       <!--值类型注入: 为stu对象中名为name的属性注入"孔乙己"作为值 -->
       <property name="name" value="孔乙己" ></property>
       <property name="age"  value="22" ></property>
       <property name="grade"  value="大三" ></property>
       <property name="rang"  value="1" ></property>
       <!-- 引用类型注入: 为course属性注入下方配置的course对象 -->
       <property name="course"  ref="course" ></property>
   </bean>    <!-- 将course对象配置到容器中 -->
   <bean name="course" class="com.spring.bean.Course" >
       <property name="name" value="Java开发" ></property>
       <property name="page" value="889" ></property>
   </bean>

(2)、构造函数注入:

<bean name="stu1" class="com.spring.bean.Student" >
   <!-- name属性: 构造函数的参数名 -->
   <!-- index属性: 构造函数的参数索引 -->
   <!-- type属性: 构造函数的参数类型-->
   <constructor-arg name="name" index="0" type="java.lang.Integer" value="compasser"  ></constructor-arg>
   <constructor-arg name="course" ref="course" index="1" ></constructor-arg>
</bean>

 

关注微信公众号compassblog,后台回复 “Spring系列一” 获取本项目源码

 

您可能还喜欢:

 

本系列后期仍会持续更新,欢迎关注!

如果你认为这篇文章有用,欢迎转发分享给你的好友!

本号文章可以任意转载,转载请注明出处!

扫码关注微信公众号,了解更多

【SSH框架】之Spring系列(一)的更多相关文章

  1. Maven环境下搭建SSH框架之Spring整合Hibernate

    © 版权声明:本文为博主原创文章,转载请注明出处 1.搭建环境 Spring:4.3.8.RELEASE Hibernate:5.1.7.Final MySQL:5.7.17 注意:其他版本在某些特性 ...

  2. SSH框架中spring的原理

    在ssh项目中,是有明确分工的,spring的作用就相当于将struts和hibernate连接起来,是将两个没有关系的框架的特性,方法,action都放在spring的配置文件中使他们建立关系.取他 ...

  3. Eclipse搭建SSH框架(Struts2+Spring+Hibernate)

    见识少的我经过一天多的研究才知道,在MyEclipse中搭好的框架的配置文件和jar包是通用的.接下来——亮剑! 工具:Eclipse+Tomcat+Mysql 一.先在Eclipse中配置好Tomc ...

  4. ssh框架整合---- spring 4.0 + struts 2.3.16 + maven ss整合超简单实例

    一 . 需求 学了这么久的ssh,一直都是别人整合好的框架去写代码,自己实际动手时才发现框架配置真是很坑爹,一不小心就踏错,真是纸上得来终觉浅! 本文将记录整合struts + spring的过程 , ...

  5. Maven环境下搭建SSH框架之Spring整合Struts2

    © 版权声明:本文为博主原创文章,转载请注明出处 1.搭建环境 Struts2:2.5.10 Spring:4.3.8.RELEASE 注意:其他版本在某些特性的使用上可能稍微存在差别 2.准备工作 ...

  6. SSH框架之Spring+Struts2+Hibernate整合篇

    回顾 -Hibernate框架 ORM: 对象关系映射.把数据库表和JavaBean通过映射的配置文件映射起来, 操作JavaBean对象,通过映射的配置文件生成SQL语句,自动执行.操作数据库. 1 ...

  7. SSH框架之Spring第四篇

    1.1 JdbcTemplate概述 : 它是spring框架中提供的一个对象,是对原始JdbcAPI对象的简单封装.spring框架为我们提供了很多的操作模板类. ORM持久化技术 模板类 JDBC ...

  8. SSH框架之Spring第三篇

    1.1 AOP概述 1.1.1 什么是AOP? AOP : 全称是Aspect Oriented Progamming既 : 面向切面编程.通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技 ...

  9. SSH框架之Spring第二篇

    1.1 基于注解的IOC配置 既注解配置和xml配置要实现的功能都是一样的,都是要降低程序间的耦合.只是配置的形式不一样. 1.2 环境搭建 1.2.1 第一步:拷贝必备的jar包 需要多拷贝一个sp ...

  10. SSH框架之Spring第一篇

    1.1. spring概述: 1.1.1 spring介绍 : Spring是分层的Java SE/EE应用 full-stack轻量级开源框架,以IoC(Inverse Of Control : 反 ...

随机推荐

  1. Linux文件链接hard link与symbolic link

    Linux中文件链接有两种方式,一种是hard link,又称为硬链接:另一种是symbolic link,又称为符号链接.要区分两者的不同要回顾Linux常用的ext2文件系统.这种文件系统使用in ...

  2. Unity Object Pool

    using System.Collections; using System.Collections.Generic; using UnityEngine; [System.Serializable] ...

  3. JavaScript语法基础:数组的常用方法详解

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 数组的定义 之前学习的数据类型,只能存储一个值(字符串为一个值).如果我 ...

  4. LAMP与LNMP架构的区别及其具体的选择说明

    LAMP==Linux+Apache+Mysql+PHP LNMP==Linux+Nginx+Mysql+PHP 以上两只架构是目前网站的主流架构 LAMP和LNMP最主要的区别在于: 一个使用的是A ...

  5. [拾 得] zip gzip bzip2 & tar 压缩/打包 四大金刚

    坚持知识分享,该文章由Alopex编著, 转载请注明源地址: http://www.cnblogs.com/alopex/    索引: 介绍压缩和打包 gzip bzip2 zip 的基本使用 gz ...

  6. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](七)

    前言 大家好,我依旧是你们的老朋友Rector,很高兴又在周五的时候准时和大家见面. Rector的系列文章[一步一步创建ASP.NET MVC5程序[Repository+Autofac+Autom ...

  7. FPGA上如何求32个输入的最大值和次大值:分治

    上午在论坛看到个热帖,里头的题目挺有意思的,简单的记录了一下. 0. 题目 在FPGA上实现一个模块,求32个输入中的最大值和次大值,32个输入由一个时钟周期给出.(题目来自论坛,面试题,如果觉得不合 ...

  8. .net 和 core2.0 数据库连接字符串

    Asp.net Core 数据库离线文件的连接(引自“张不水”兄的研究成果.) 一.绝对路径: "DefaultConnection": "Data Source=(lo ...

  9. vs2005配置OpenCv2.3.1

    编译OpenCv 1 用CMake导出VC++项目文件 运行cmake-gui,设置where is the source code路径为OpenCV安装路径(本文档假定安装位置为:c:\OpenCV ...

  10. SQL Server——存储过程

    我想从下面几个方面大概的讲述下存储过程,可能有些知识点是你没有注意的,也可能有些知识点我不知道,欢迎大家指点指点.如有不足,欢迎指教! 存储过程概念 存储过程优点 存储过程的接口 存储过程的解析.编译 ...