Spring笔记01(基础知识)
1、基础知识

01.Spring:轻量级Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建。
02.目标:实现一个全方位的整合框架,实现“一站式”的企业应用开发。
03.内容:
a.IoC容器
b.AOP实现
c.数据访问支持:简化JDBC/Hibernate编码 声明式事务
d.Web集成
04.Spring设计理念
Spring是面向bean的编程,IoC(Inversion of Control) ,AOP(Aspect Oriented Programming)
05.Spring优点:
a.低侵入式设计
b.独立于各种应用服务器
c.依赖注入特性将组件关系透明化,降低了耦合度
d.面向切面编程特性允许将通用任务进行集中式处理
e.与第三方框架的良好整合
06.Spring两大核心技术
a.控制反转(IoC: Inversion of Control)/依赖注入(DI:Dependency Injection)
b.面向切面编程(AOP:Aspect Oriented Programming)
2、Spring概述:
01.Java EE开发者的春天
02.主要目的是 降低业务逻辑层和其他层的耦合度 IOC
03.spring容器是用来创建(new)和管理(对象之间的关系)程序中所有对象的实例
04.非侵入式轻量级开源框架
001. 侵入式需要我们显示的使用框架中的API才能实现某种功能!
框架强行的将功能推送给我们!
002.非侵入式不需要改变我们之前的编码!
我们自愿从框架中获取想要的功能!
05.一站式(full stack)开发
001. 我们先去A酒店吃饭
002. B娱乐场所唱歌
003. C场所足疗 吃饭,唱歌,足疗这三个功能都在一个D商务会馆中实现!
那么D商务会馆就是一条龙服务! (一站式)
06.spring的核心
001.IOC (Inversin Of Control) 控制反转
之前我们在service层创建dao的实例对象! 控制权在service!
现在我们创建dao的实例对象任务交给spring容器,控制权在spring容器!
这种控制权由我们程序本身交给spring容器的行为,我们称之为IOC(控制反转)! DI(Dependency Injection)依赖注入
之前service层的代码
com.xdf.dao.StudentDao dao=new StudentDaoImpl();
现在
com.xdf.dao.StudentDao dao=null;
public void setDao(com.xdf.dao.StudentDao stuDao){
this.dao=stuDao;
}
我们只需要在spring容器中配置StudentDao,
stuDao就有值了,然后通过调用setDao()给this.dao赋值 spring容器给我们创建了对象的实例,然后通过setXxx(),
把对象的实例给我们需要的地方,这个过程我们称之为DI(依赖注入); 002.AOP (Aspect Oriented Programming)面向切面编程 01.横切关注点
02.切面
03.切入点
04.连接点
05.通知
06.目标对象
07.织入 07.spring框架中的核心设计模式
01.工厂
02.反射
03.单例
04.代理
05.适配器
3、Spring maven依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>Spring</artifactId>
<groupId>cn.pb</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>01SpringBase</artifactId>
<packaging>jar</packaging> <name>01SpringBase</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--spring对应的版本号 方便后期修改版本号-->
<spring.version>4.2.1.RELEASE</spring.version>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency> <!--引入需要的spring 核心jar-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency> </dependencies> </project>
4、Spring 的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--接收程序给我们的bean对象
id就是我们的一个标识
class是对应的实现类,class不能是接口
-->
<bean id="studentDaoImpl" class="cn.pb.dao.impl.StudentDaoImpl"></bean> <!--配置service层的实例对象-->
<bean id="studentServiceImpl" class="cn.pb.service.impl.StudentServiceImpl">
<!--设值注入-->
<property name="dao" ref="studentDaoImpl"></property>
</bean> <!--配置我们的student对象 lazy-init="true" 默认是false 按需加载-->
<bean id="student" class="cn.pb.bean.Student" lazy-init="true">
<property name="name" value="小黑"></property>
<property name="age" value="18"></property>
</bean> <!-- 在spring的核心配置文件中 所有的bean默认都是单例模式
scope="singleton" 默认
scope="prototype" 原型
-->
<bean id="student2" class="cn.pb.bean.Student" scope="singleton">
<property name="age" value="40"/>
<property name="name" value="小黑2"/>
</bean> </beans>
5、Spring 结构图:

Spring笔记01(基础知识)的更多相关文章
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)
一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...
- C#学习笔记(基础知识回顾)之值传递和引用传递
一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...
- C#学习笔记(基础知识回顾)之值类型和引用类型
一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...
- Quartz学习笔记:基础知识
Quartz学习笔记:基础知识 引入Quartz 关于任务调度 关于任务调度,Java.util.Timer是最简单的一种实现任务调度的方法,简单的使用如下: import java.util.Tim ...
- Scala学习笔记--正则表达式基础知识、如何在scala内使用
正则表达式语法:https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx 基础知识:正则表达式30分钟入门教程 http://www. ...
- (C/C++学习笔记) 一. 基础知识
一. 基础知识 ● 程序和C/C++ 程序: 根据Wirth (1976), Algorithms + Data Structures = Programs. Whence C: 1972, Denn ...
- PHP笔记1__基础知识
客户端: 美妙的网页组成(都是由浏览器解释): 1.HTML 2.CSS--给HTML化妆 3.客户端脚本编程语言(JavaScript等)--特效 服务器端: 1.Web服务器Apache/Ngi ...
- 数据库学习笔记 - MySQL基础知识
一.数据库基础知识 1.1 Whats's 数据库 数据库(Database,DB):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合.如:大型-银行存储的信息,小型-电话簿. 数据 ...
随机推荐
- 转:SATA协议简介
SATA协议简介 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/FA99999/article/details/70738724 1.概述 本文档主 ...
- CentOS开启FTP及配置用户
vsftpd作为FTP服务器,在Linux系统中是非常常用的.下面我们介绍如何在centos系统上安装vsftp. 什么是vsftpd vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序 ...
- 模拟struts2
利用到的技术:dom4j和xpath 自己写一个Filter 在doFilter中拦截请求 // 2.1 得到请求资源路径 String uri = request.getReq ...
- 【PyCharm编辑器】之引用selenium包提示错误:Unresolved reference 'selenium' less... (Ctrl+F1)
一.现象还原: 当新建.py文件时,需要引用selenium中的方法时,报错,提示红波浪线: Unresolved reference 'selenium' less... (Ctrl+F1) Thi ...
- 14-redis运维常用命令
一:运维常用的server端命令 TIME 查看时间戳与微秒数 DBSIZE 查看当前库中的key数量 BGREWRITEAOF 后台进程重写AOF BGSAVE 后台保存rdb快照 ...
- C#使用for循环移除HTML标记
public static string StripTagsCharArray(string source) { char[] array = new char[source.Length]; int ...
- NDK以及C语言基础语法(二)
一.字符串类:(属于类类型) -String (在C++中才有) 使用之前必学引入String 类型: 引入String头文件(系统的头文件): #include <string> p ...
- [URAL-1517][求两个字符串的最长公共子串]
Freedom of Choice URAL - 1517 Background Before Albanian people could bear with the freedom of speec ...
- 广播、多播和IGMP的一点记录
广播和多播:仅应用于UDP 广播分为: 1.受限的广播(255.255.255.255) 2.指向网络的广播(eg:A类网络 netid.255.255.255)主机号为全1的地址 3.指向子网的广播 ...
- 基于EasyNVR二次开发实现自己的摄像机IPC/NVR无插件化直播解决方案
在之前的博客中<基于EasyNVR实现RTSP/Onvif监控摄像头Web无插件化直播监控>,我们已经比较多的描述EasyNVR所实现的功能,这些也在方案地址:http://www.eas ...