Spring第一章笔记
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第一章笔记相关推荐
- 计算机应用基础自学手写笔记,计算机应用基础第一章笔记.docx
计算机应用基础第一章笔记 1.计算机工具的变迁 2.计算机的发展过程 3.冯.诺依曼计算机的工作原理 4.计算机系统的硬件和软件组成 5.计算机的性能指标 6.影响计算机的性能因素 7.数据在计算机中 ...
- 《Python深度学习》第一章笔记
<Python深度学习>第一章笔记 1.1人工智能.机器学习.深度学习 人工智能 机器学习 深度学习 深度学习的工作原理 1.2深度学习之前:机器学习简史 概率建模 早期神经网络 核方法 ...
- 【智能计算系统笔记】第一章笔记及课后习题
第一章笔记及课后习题 笔记 课后习题 1. 简述强人工智能和弱人工智能的区别. 2. 简述人工智能研究的三个学派. 3. 一个有两个输入的单个神经元构成的感知机能完成什么任务? 4. 深度学习的局限性 ...
- app研发录第一章笔记
app研发录第一章笔记
- css高级教程第一章笔记
2019独角兽企业重金招聘Python工程师标准>>> 大年30,今天刚刚看完第一章,上传上来一些笔记. 1.css:可以将文档的表现部分与内容分开 2.id:是唯一的,id可以用来 ...
- 《数据库系统概论》第一章笔记
本书第一章,介绍了一些数据库的基本概念,是理解后序章节的基础. 笔记基本上对这些基础概念的摘录. 做笔记的目的,一是加深记忆和理解,二是方便以后资料查找. 1.1 数据库系统概述 1.1.1 数据库系 ...
- 自动驾驶决策规划算法第一章笔记 忠厚老实的老王
第一章 自动驾驶决策规划算法数学基础 第一节:决策规划算法的地位和作用 该笔记来自b站up主(偶像):憨厚老实的老王视频链接主页 第二节:为什么规划中经常见到五次多项式
- Java核心技术·卷二·第一章笔记
Java核心技术·卷二·笔记 第一章:Java8的流库 Java8引入的用来以"做什么而非怎么做"的方式的处理集合 1.1 从迭代到流的操作 package com.package ...
- 高等数学A(一)第一章笔记分享
学校里有许多学弟学妹们马上就面临高数的期中考试了,不知道大家准备的怎么样了.我不敢自诩大佬,但是对自己的笔记还是很满意的!而且我依靠着这套笔记,在期末顺利拿到了满绩点. 希望大家在看完以后能有所收获, ...
最新文章
- Cissp-【第6章 安全评估与测试】-2021-3-15(661页-706页)
- 社保,交得越多亏得越多(转)
- Linux vim光标移动命令
- 用户体验设计案例分析
- 简述HTML DOM及其节点分类
- python自动化测试开发_基于python的selenium2自动化测试从基础到实战(Python3、selenium2、自动化测试、web测试)...
- 风格之争:Coroutine vs Callback
- 系统性风险与个体性风险
- 凸函数、凸规划的定义及学习
- centos7安装tomcat9过程
- 计算机自带键盘无法使用,笔记本电脑键盘用不了怎么回事_笔记本电脑键盘不能用如何解决-win7之家...
- xx大学云数据中心建设方案
- Layui文件上传样式在ng-dialog不显示的问题处理
- 图样图森破 设置虚拟机优先级真的很容易?
- QQ空间蜘蛛爬虫数据报告
- 母牛的故事(C语言)
- 南大通用数据库(2):客户端的使用(GBase 企业管理器的使用)
- Percona监控数据库解决方案
- USB摄像头测试网址
- SAXReader的主要用法(XML)
热门文章
- 20200113Python爬虫---猫眼字体反爬
- 软件设计与体系结构第三次实验——web服务开发
- 618小红书品牌营销复盘「保姆级教学」 !
- ICPC 2020 亚洲区域赛济南站 赛后总结
- 十月的尾巴,梦起航的时刻
- 上海交通大学2021计算机录取,2021年上海交通大学高考录取结果什么时候出来及查询系统入口...
- VMware:虚拟机磁盘空间不足怎么办
- Mac OS 脚本生成dmg安装文件
- 坐拥行业5成新增用户,每日优鲜稳坐生鲜电商头名
- java对输入的电话号码进行匹配(1、位数为11位 2、纯数字 3、以1开头第二位必须是3、7、8中的一位)