Spring第一章笔记

第一步:

配置pom文件导入依赖

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.3.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>4.3.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>4.3.7.RELEASE</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.14</version></dependency></dependencies>

会生成jar包

第二步:

创建类(如Dog,Man类)
要有构造方法,空的构造方法,get set方法和toString方法
在Man实体类中加入Dog属性 ,并点出get set 方法

第三步:

在resources资源文件夹中新建一个xml文件,选择XML Configuration file --> Spring Config(带有绿叶的标志),文件夹名一般写为applicationContext.xml

ContextLoaderListener是一个ServletContextListener, 它在你的web应用启动的时候初始化。缺省情况下, 它会在WEB-INF/applicationContext.xml文件找Spring的配置。 你可以通过定义一个<context-param>元素名字为”contextConfigLocation”来改变Spring配置文件的位置。
例如:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

在xml文件中:

点击右上角的一行configure application context -->点击ok

1.创建对象:

<bean id="d1" class="com.swjd.bean.Dog"><property name="id" value="1"></property><property name="name" value="小黑"></property><property name="sex" value="公"></property></bean>

2 依赖注入

2.1 第一种依赖注入方法:set注入

<bean id="m1" class="com.swjd.bean.Man"><property name="id" value="1"></property><property name="name" value="刘德华"></property><property name="age" value="48"></property><!--<property name="dog" ref="d1"></property>--><property name="dog"><ref bean="d1"></ref></property></bean>

2.2 第二种依赖注入方法:调用带参的构造方法注入

<bean id="m2" class="com.swjd.bean.Man"><constructor-arg index="0" type="int" value="2"></constructor-arg><constructor-arg index="1" type="java.lang.String" value="圆圆"></constructor-arg><constructor-arg index="2" type="int" value="2"></constructor-arg><!--注入Dog--><constructor-arg index="3" type="com.swjd.bean.Dog" ref="d1"></constructor-arg></bean>

2.3 第三种依赖注入方法:p命名空间注入

<bean id="m3" class="com.swjd.bean.Man" p:id="3" p:name="小小" p:age="19" p:dog-ref="d1"></bean>

2.4 第四种依赖注入方法:Spel表达式注入

<bean id="m4" class="com.swjd.bean.Man"><property name="id" value="#{m1.id}"></property><property name="name" value="#{m2.name}"></property><property name="age" value="#{m3.age}"></property><property name="dog" ref="d1"></property></bean>

2.5 有注入方式:数组、集合(list、map、set)、properties等

例如:在Student实体类中注入
–实体类:

private String[] hobbies;//爱好private List<String> subject;//科目private Map<String,Object> map;

–xml文件中:

<bean id="s1" class="com.swjd.bean.Student"><property name="name" value="小小"></property><property name="hobbies"><!--注入数组--><array><value>小说</value><value>漫画</value><value>游戏</value><value>古风</value></array></property><property name="subject"><!--注入集合--><list><value>Spring</value><value>MyBatis</value></list></property><property name="map"><!--注入集合--><map><entry key="CN"><value>中国</value></entry><entry key="RU"><value>俄罗斯</value></entry></map></property></bean>

3 测试

3.1 在mian方法中启动Spring容器

     ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");

3.2 测试语句(打印在控制台)

     System.out.println(context.getBean("m1", Man.class));System.out.println(context.getBean("m2", Man.class));System.out.println(context.getBean("m3", Man.class));System.out.println(context.getBean("m4", Man.class));System.out.println(context.getBean("s1",Student.class));

关于spring框架:Spring 框架是一个分层架构

Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
在这篇由三部分组成的 Spring 系列 的第 1 部分中,我将介绍 Spring 框架。我先从框架底层模型的角度描述该框架的功能,然后将讨论两个最有趣的模块:Spring 面向方面编程(AOP)和控制反转 (IOC) 容器。接着将使用几个示例演示 IOC 容器在典型应用程序用例场景中的应用情况。这些示例还将成为本系列后面部分进行的展开式讨论的基础,在本文的后面部分,将介绍 Spring 框架通过 Spring AOP 实现 AOP 构造的方式。

面向切面编程(AOP)和控制反转 (IOC) 容器

IOC 和 AOP
控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器 (在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。
在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。下表列出了 IOC 的一个实现模式。

类型 1 服务需要实现专门的接口,通过接口,由对象提供这些服务,可以从对象查询依赖性(例如,需要的附加服务) 类型 2 通过
JavaBean 的属性(例如 setter 方法)分配依赖性 类型 3 依赖性以构造函数的形式提供,不以 JavaBean 属性的形式公开
Spring 框架的 IOC 容器采用类型 2 和类型3 实现。

面向方面的编程 面向方面的编程,即
AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP
的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。

AOP 和 IOC
是补充性的技术,它们都运用模块化方式解决企业应用程序开发中的复杂问题。在典型的面向对象开发方式中,可能要将日志记录语句放在所有方法和
Java 类中才能实现日志功能。在 AOP 方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上。当然,优势就是
Java 类不需要知道日志服务的存在,也不需要考虑相关的代码。所以,用 Spring AOP 编写的应用程序代码是松散耦合的。

AOP 的功能完全集成到了 Spring 事务管理、日志和其他各种特性的上下文中。

IOC 容器 Spring 设计的核心是 org.springframework.beans 包,它的设计目标是与 JavaBean
组件一起使用。这个包通常不是由用户直接使用,而是由服务器将其用作其他多数功能的底层中介。下一个最高级抽象是 BeanFactory
接口,它是工厂设计模式的实现,允许通过名称创建和检索对象。BeanFactory 也可以管理对象之间的关系。

BeanFactory 支持两个对象模型。

单态 模型提供了具有特定名称的对象的共享实例,可以在查询时对其进行检索。Singleton
是默认的也是最常用的对象模型。对于无状态服务对象很理想。 原型
模型确保每次检索都会创建单独的对象。在每个用户都需要自己的对象时,原型模型最适合。 bean 工厂的概念是 Spring 作为 IOC
容器的基础。IOC 将处理事情的责任从应用程序代码转移到框架。正如我将在下一个示例中演示的那样,Spring 框架使用 JavaBean
属性和配置数据来指出必须设置的依赖关系。

Spring第一章笔记相关推荐

  1. 计算机应用基础自学手写笔记,计算机应用基础第一章笔记.docx

    计算机应用基础第一章笔记 1.计算机工具的变迁 2.计算机的发展过程 3.冯.诺依曼计算机的工作原理 4.计算机系统的硬件和软件组成 5.计算机的性能指标 6.影响计算机的性能因素 7.数据在计算机中 ...

  2. 《Python深度学习》第一章笔记

    <Python深度学习>第一章笔记 1.1人工智能.机器学习.深度学习 人工智能 机器学习 深度学习 深度学习的工作原理 1.2深度学习之前:机器学习简史 概率建模 早期神经网络 核方法 ...

  3. 【智能计算系统笔记】第一章笔记及课后习题

    第一章笔记及课后习题 笔记 课后习题 1. 简述强人工智能和弱人工智能的区别. 2. 简述人工智能研究的三个学派. 3. 一个有两个输入的单个神经元构成的感知机能完成什么任务? 4. 深度学习的局限性 ...

  4. app研发录第一章笔记

    app研发录第一章笔记

  5. css高级教程第一章笔记

    2019独角兽企业重金招聘Python工程师标准>>> 大年30,今天刚刚看完第一章,上传上来一些笔记. 1.css:可以将文档的表现部分与内容分开 2.id:是唯一的,id可以用来 ...

  6. 《数据库系统概论》第一章笔记

    本书第一章,介绍了一些数据库的基本概念,是理解后序章节的基础. 笔记基本上对这些基础概念的摘录. 做笔记的目的,一是加深记忆和理解,二是方便以后资料查找. 1.1 数据库系统概述 1.1.1 数据库系 ...

  7. 自动驾驶决策规划算法第一章笔记 忠厚老实的老王

    第一章 自动驾驶决策规划算法数学基础 第一节:决策规划算法的地位和作用 该笔记来自b站up主(偶像):憨厚老实的老王视频链接主页 第二节:为什么规划中经常见到五次多项式

  8. Java核心技术·卷二·第一章笔记

    Java核心技术·卷二·笔记 第一章:Java8的流库 Java8引入的用来以"做什么而非怎么做"的方式的处理集合 1.1 从迭代到流的操作 package com.package ...

  9. 高等数学A(一)第一章笔记分享

    学校里有许多学弟学妹们马上就面临高数的期中考试了,不知道大家准备的怎么样了.我不敢自诩大佬,但是对自己的笔记还是很满意的!而且我依靠着这套笔记,在期末顺利拿到了满绩点. 希望大家在看完以后能有所收获, ...

最新文章

  1. Cissp-【第6章 安全评估与测试】-2021-3-15(661页-706页)
  2. 社保,交得越多亏得越多(转)
  3. Linux vim光标移动命令
  4. 用户体验设计案例分析
  5. 简述HTML DOM及其节点分类
  6. python自动化测试开发_基于python的selenium2自动化测试从基础到实战(Python3、selenium2、自动化测试、web测试)...
  7. 风格之争:Coroutine vs Callback
  8. 系统性风险与个体性风险
  9. 凸函数、凸规划的定义及学习
  10. centos7安装tomcat9过程
  11. 计算机自带键盘无法使用,笔记本电脑键盘用不了怎么回事_笔记本电脑键盘不能用如何解决-win7之家...
  12. xx大学云数据中心建设方案
  13. Layui文件上传样式在ng-dialog不显示的问题处理
  14. 图样图森破 设置虚拟机优先级真的很容易?
  15. QQ空间蜘蛛爬虫数据报告
  16. 母牛的故事(C语言)
  17. 南大通用数据库(2):客户端的使用(GBase 企业管理器的使用)
  18. Percona监控数据库解决方案
  19. USB摄像头测试网址
  20. SAXReader的主要用法(XML)

热门文章

  1. 20200113Python爬虫---猫眼字体反爬
  2. 软件设计与体系结构第三次实验——web服务开发
  3. 618小红书品牌营销复盘「保姆级教学」 !
  4. ICPC 2020 亚洲区域赛济南站 赛后总结
  5. 十月的尾巴,梦起航的时刻
  6. 上海交通大学2021计算机录取,2021年上海交通大学高考录取结果什么时候出来及查询系统入口...
  7. VMware:虚拟机磁盘空间不足怎么办
  8. Mac OS 脚本生成dmg安装文件
  9. 坐拥行业5成新增用户,每日优鲜稳坐生鲜电商头名
  10. java对输入的电话号码进行匹配(1、位数为11位 2、纯数字 3、以1开头第二位必须是3、7、8中的一位)