文档章节

Spring简单总结part1

我是小个子啊
 我是小个子啊
发布于 2016/04/19 22:55
字数 1179
阅读 126
收藏 8

精选30+云产品,助力企业轻松上云!>>>

 

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>

  
上一篇: ssh整合
我是小个子啊
粉丝 14
博文 32
码字总数 26893
作品 0
驻马店
私信 提问
加载中
请先登录后再评论。
1.4 依赖(part1)

官方英文版地址:https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html 备注:翻译如有不对,请多指正,谢谢。 1.4. Dependencies A typical enterp......

DreamMakers
2018/08/17
0
0
Spring Cloud学习系列第五篇【API网关服务】

  这篇随笔接着学习微服务中一个比较重要的组件API网关服务。当我们微服务架构完成后最终是要提供给外部访问的,于是我们需要一个统一的访问入口,能隐藏我们内部服务URL细节,这就有点像局...

osc_od08lbhl
2018/07/14
14
0
springMvc接口开发--对访问的restful api接口进行拦截实现功能扩展

1、视频参加Spring Security开发安全的REST服务PART1PART1 3-7 使用切片拦截REST服务三通it学院-www.santongit.com-.mp4 讲的比较的经典,后面我也会通过案例来对代码进行分析 restful api的...

osc_rx2gh7b8
2019/04/13
10
0
spring mvc总结

目录 1. Part1: springmvc总结 2. Part2: Spring mvc框架搭建步骤 3. Part3:Springmvc基于注解的实现 4. Part4:HandleMapping(处理器映射)实现的方式有三种 5. Part4:参数传递的3种方式 6....

杨肥麻
2016/11/09
5
0
b2b2c系统jwt权限源码分享part2

  在上一篇《b2b2c系统jwt权限源码分享part1》中和大家分享了b2b2c系统中jwt权限的基础设计及源码,本文继续和大家分享jwt和spring security整合部分的思路和源码。 在上一篇文章中已经分享...

java电商系统源码分享
04/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Cocoa Autolayout:内容拥抱与内容压缩阻力优先

问题: I can't find a clear answer on Apple documentation regarding Cocoa Autolayout about the difference between content hugging and compression resistance. 关于Cocoa Autolayou......

javail
48分钟前
12
0
OSChina 周二乱弹 —— 附近居民接连失踪,你们有什么头绪吗

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《伤离别(原版)》- 黄霑 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪维 :睡...

小小编辑
58分钟前
17
0
IntelliJ IDEA 默认快捷键大全

Remember these Shortcuts 常用 功能 快捷键 备注 ● Smart code completion Ctrl + Shift + Space - ● Search everywhere Double Shift - ● Show intention actions and quick-fixes Alt......

巨輪
今天
24
0
Hacker News 简讯 2020-07-14

更新时间: 2020-07-14 02:01 Chipmaker Analog Devices to Acquire Maxim Integrated for $21B - (reuters.com) 芯片制造商模拟设备公司将以210亿美元收购Maxim Integrated 得分:92 | 评论:......

FalconChen
今天
129
0
绕过移动端系统限制的 dlopen 库 byOpen

byOpen是一个绕过移动端系统限制的增强版dlfunctions库。 支持特性 Android 支持App中加载和使用Android系统库接口(即使maps中还没有被加载也支持)。 Android 7以上dlopen, System.load都是...

shzwork
昨天
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部