文档章节

Spring简单总结part1

我是小个子啊
 我是小个子啊
发布于 2016/04/19 22:55
字数 1179
阅读 102
收藏 8
点赞 1
评论 0
 

Spring简单总结

1. Spring的概述(抄的百科) 

Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的"一站式" 轻量级开源框架

分层:EE发中三层结构.(一站式:Spring框架提供了EE开发每一层的解决方案.)

              * WEB: Spring MVC.

              * 业务层: SpringBean管理.

              * 持久层: SpringJdbcTemplate, orm模块用于整合其他的持久层框架.

2. Spring的优点

方便解耦,简化开发

Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理

AOP编程的支持

Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能

声明式事务的支持

只需要通过配置就可以完成对事务的管理,而无需手动编程

方便程序的测试

SpringJunit4支持,可以通过注解方便的测试Spring程序

方便集成各种优秀框架

Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:StrutsHibernateMyBatisQuartz等)的直接支持

降低JavaEE API的使用难度

Spring JavaEE开发中非常难用的一些APIJDBCJavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低

3. Spring的开发包

3.1 开发包的目录结构

docs       :     Spring的开发文档

libs:        Spring的开发包.

schema:  约束文档.

3.2 HelloWorld必备包

context          beans            core        expression

org.apache.commons.logging  +  log4j

4. HelloWorld案例

4.1 准备配置文件

src目录下,创建名为 applicationContextxml文件 (注意,文件图标会变成小树叶)

4.2 引入配置文件的约束文件

按以下步骤:

 windowèpreferenceè搜索catalogèaddèfile systemè查找约束文件èkey typeèSchema Locationèkeyè原有内容后添加约束文件名èOKè至此,引入约束文件成功

4.3 在配置文件中添加约束

打开applicationContext.xm文件è添加<beans></beans>节点è切换到design视图è右键èedit namespaceèaddèxsièOKè继续addèspecify new NamespaceèLocation HintèBrowserè选择上一步引入的约束文件èOKèprefix可以为空ènamespace的值可 复制Location Hint中最后一个”/”前的内容èOKè重新打开applicationContext.xml,测试,有提示!OK

最终效果:

<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-3.2.xsd http://www.springframework.org/schema/context/spring-context-3.2.xsd ">

</beans>

4.4 准备实体类

public class Car {

       private String name;                    //准备属性

       public String getName() {

              return name;

       }

       public void setName(String name) {

              this.name = name;

       }

       @Override

       public String toString() {

              return "Car [name=" + name + "]";

       }

}

4.5 在配置文件中进行配置

<bean name="car" class="cn.xiaoge.domain.Car">

              <property name="name" value="QQ"></property>

       </bean>

4.6 在测试类中进行测试

@Test

       public void fun1(){

              //1. 先加载配置信息,其中会将配置文件中配置的bean初始化

ClassPathXmlApplicationContext  ac =

new ClassPathXmlApplicationContext("applicationContext.xml");

              //2. 获取相应的对象

Car car = (Car) ac.getBean("car");

//3. 测试属性注入是否成功

              System.out.println(car);

       }

5. 属性注入

5.1 构造方法的属性注入

<bean name="em" class="cn.xiaoge.domain.Employee" >

              <!--

                     利用构造方法为属性赋值

                     name:  构造方法的参数名

                     value: 构造方法中该参数的值

                     ref:   构造方法中参数为引用类型时的值

                     type:  构造方法中参数的数据类型

                     index: 该参数在构造方法的参数列表中的索引

               -->

              <constructor-arg name="name" value="xiaoxiao" type="String"></constructor-arg>

              <constructor-arg name="car" ref="car" ></constructor-arg>

       </bean>

5.2 Set方法的属性注入

<bean name="em" class="cn.xiaoge.domain.Employee">

             

              <!-- value主要负责基本数据类型的赋值操作.会覆盖构造方法中的赋值 -->

              <property name="name" value="xiaogezi" />

       <!-- ref主要负责引用数据类型的赋值操作;另外,该引用类型的类必须在spring配置文件中定义 -->

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

             

       </bean>

5.3 p名称空间的注入

首先,在约束头中添加:

       xmlns:p=http://www.springframework.org/schema/p

其次,添加属性值

<bean name="car" class="cn.xiaoge.domain.Car" p:name="QQ">

</bean>

5.4 SpEL的属性注入

       SpEL:  Spring Expression Language

       //注意要为bean设置id,这样才能在el表达式中用#{Beanid}

<bean id="carInfo" class="cn.itcast.spring.demo6.CarInfo">

       </bean>

      

       <!-- SpEL的方式的属性注入 -->

       <bean id="car2" class="cn.itcast.spring.demo6.Car2">

              <property name="name" value="#{carInfo.carName}"/>

              <property name="price" value="#{carInfo.calculatorPrice()}"/>

       </bean>

       <bean id="employee" class="cn.itcast.spring.demo6.Employee">

              <property name="name" value="abc "/>

              <property name="car2" value="#{car2}"/>

       </bean>

5.5. 为各类集合注入

<!-- 集合注入 -->

       <bean name="mylist" class="cn.xiaoge.domain.MyList">

              <!-- List集合注入 -->

              <property name="list"  >

                     <list>

                            <value>123</value>

                            <ref bean="car"/>

                     </list>

              </property>

              <!-- set集合注入 -->

              <property name="set">

                     <set>

                            <value>xiaogezi</value>

                            <ref bean="car"/>

                     </set>          

              </property>

              <!-- 为数组注入 -->

              <property name="arr">

                     <array>

                            <value>123</value>

                            <ref bean="car"/>

                     </array>

              </property>

              <!-- map注入 -->

                     <property name="map">

                     <map>

                            <entry key="name" value="xiaoge"></entry>

                            <entry key="car" value-ref="car"></entry>

                     </map>

              </property>

       <!-- Properties 注入 -->

              <property name="prop">

                     <props>

                            <prop key="username">123</prop>

                            <prop key="password">1234</prop>

                     </props>

              </property>

    </bean>

  

© 著作权归作者所有

共有 人打赏支持
我是小个子啊
粉丝 14
博文 26
码字总数 26893
作品 0
驻马店
ssm 框架总结

用 ssm 为框架做了一个系统的后台,今天做一下关于 ssm 的总结。 一、Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-...

什么都不懂的小石 ⋅ 01/01 ⋅ 0

Spring Boot 项目自动发布

Spring Boot 项目自动发布 Spring Boot 项目自动发布 简介 在公司从移动端转后端已经快一年了,使用的技术框架一直是Spring Boot,和以前大学时候基于Tomcat的不太一样。 这篇文章简单介绍下...

流水不腐小夏 ⋅ 04/24 ⋅ 0

微服务架构实战学习(四):RPC 框架对比

下面是对市面上比较流行的 RPC 框架的对比 以上对比是我结合各框架的网上资料以及官方文档资源总结的,在实际的使用过程中。我们可以结合我们的业务场景来选择不同的框架。 虽然说没有最好的...

雨林_a1d6 ⋅ 06/11 ⋅ 0

整合spring cloud云架构-SSO单点登录之OAuth2.0根据token获取用户信息(4)

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: 我这里只是简单写了一些登出的代码,我们会在后面的文章...

itcloud ⋅ 06/14 ⋅ 0

整合spring cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)

上一篇我根据框架中OAuth2.0的使用总结,画了一个根据用户名+密码实现OAuth2.0的登录认证的流程图,今天我们看一下logout的流程: 我这里只是简单写了一些登出的代码,我们会在后面的文章中详...

itcloud ⋅ 06/14 ⋅ 0

Spring Cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)

上一篇我根据框架中OAuth2.0的使用总结,画了一个根据用户名+密码实现OAuth2.0的登录认证的流程图,今天我们看一下logout的流程: 我这里只是简单写了一些登出的代码,我们会在后面的文章中详...

明理萝 ⋅ 06/07 ⋅ 0

Spring Cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: 我这里只是简单写了一些登出的代码,我们会在后面的文章...

明理萝 ⋅ 06/07 ⋅ 0

spring boot简单实现rest服务

问题 最开始我是想使用Spring MVC搭建一个简单的REST服务,去官网看了看教程,现在Spring胆越来越大了,需要我集成一个maven的父项目,我并不愿意继承Spring的父项目。然后,就开始下面的探索...

亚林瓜子 ⋅ 06/12 ⋅ 0

Spring Retry重试机制

在调用第三方接口或者使用mq时,会出现网络抖动,连接超时等网络异常,所以需要重试。为了使处理更加健壮并且不太容易出现故障,后续的尝试操作,有时候会帮助失败的操作最后执行成功。例如,...

aoho ⋅ 05/09 ⋅ 0

基于 Spring Boot 2.0 构建一个 RESTful WebService

REST 全称是 Representational State Transfer,中文意思是“表述性状态转移”。RESTful 是关于 Web 的现有特征和使用方式的一些准则和约束。 基于 Spring MVC 的 RestController,我们可以方...

摆码王子 ⋅ 04/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

使用 vue-cli 搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一、 安装 node.js 首先需要安装node环境,可以直接到中...

初学者的优化 ⋅ 14分钟前 ⋅ 0

设计模式 之 享元模式

设计模式 之 享元模式 定义 使用共享技术来有效地支持大量细粒度对象的复用 关键点:防止类多次创建,造成内存溢出; 使用享元模式来将内部状态与外部状态进行分离,在循环创建对象的环境下,...

GMarshal ⋅ 29分钟前 ⋅ 0

SpringBoot集成Druid的最简单的小示例

参考网页 https://blog.csdn.net/king_is_everyone/article/details/53098350 建立maven工程 Pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM......

karma123 ⋅ 今天 ⋅ 0

Java虚拟机基本结构的简单记忆

Java堆:一般是放置实例化的对象的地方,堆分新生代和老年代空间,不断未被回收的对象越老,被放入老年代空间。分配最大堆空间:-Xmx 分配初始堆空间:-Xms,分配新生代空间:-Xmn,新生代的大小一...

算法之名 ⋅ 今天 ⋅ 0

OSChina 周日乱弹 —— 这么好的姑娘都不要了啊

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @TigaPile :分享曾惜的单曲《讲真的》 《讲真的》- 曾惜 手机党少年们想听歌,请使劲儿戳(这里) @首席搬砖工程师 :怎样约女孩子出来吃饭,...

小小编辑 ⋅ 今天 ⋅ 8

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部