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):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合.如:大型-银行存储的信息,小型-电话簿. 数据 ...
随机推荐
- ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借
ASP.NET MVC深入浅出系列(持续更新) 一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...
- css hover对其包括的元素进行样式设置
<ul class="icon-down-single-arr-li"> <li> <a href="javascript:void(0)& ...
- QTreeWidget 的用法
Qt QTreeWidget 新建一个Qt Widgets Application,拖拽一个Tree Widget 到 ui 界面上,最后实现的效果如下: 添加代码 //test.h //在头文件里添 ...
- 基于pcl 和 liblas 库 las与pcd格式(rgb点)相互转换(win10 VS2013 X64环境 )
#include <liblas/liblas.hpp> #include <iomanip> #include <iostream> #include <s ...
- win10系统架构调用
操作系统模型 操作系统有两种模式: 用户模式 内核模式 当用户模式调用系统服务时,CPU执行一个特殊的指令以切换到内核模式(Ring0),当系统服务调用完成时,操作系统切换回用户模式(Ring3). ...
- ubuntu下matlab的无界面启动---命令行操作
命令行下运行 Matlab 及 函数 首先参考命令行下matlab的运行参数的定义与作用:http://www.cnblogs.com/beanocean/p/3677404.html 创建示例程序: ...
- zookeeper参数的详解
安装和配置详解 本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookee ...
- Go 语言从新手到大神:每个人都会踩的五十个坑(转)
Go语言是一个简单却蕴含深意的语言.但是,即便号称是最简单的C语言,都能总结出一本<C陷阱与缺陷>,更何况Go语言呢.Go语言中的许多坑其实并不是因为Go自身的问题.一些错误你再别的语言中 ...
- NERO8.0刻录系统光盘
正常启动NREO,点击NERO 8.0左下角图标(启动NERO应用程序和工具),选NERO Express Essentials,在左边的几个选项中选择“映像.项目.复制”,右边选“光盘映像或保存的项 ...
- python 基础 8.5 re 的match对象
#/usr/bin/python #coding=utf-8 #@Time :2017/11/18 21:49 #@Auther :liuzhenchuan #@File :match对象.p ...