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):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合.如:大型-银行存储的信息,小型-电话簿. 数据 ...
随机推荐
- C语言批量数据到动态二维数组
上一篇文章将文件读取放到静态创建的二维数组中,可是结合网络上感觉到今天的DT时代,这样批量大量读取一个上百行的数据,分配的内存是否可能由于大量的数据而产生溢出呢,近期一直研究里malloc函数.通过它 ...
- HTML5开发移动web应用——SAP UI5篇(8)
本次对之前学习的SAP UI5框架知识进行简单小结.以及重点部分知识的梳理. 1.在UI5使用过程中,命名空间的概念非常重要. 2.一般的sap组件引用格式例如以下: sap.ui.define([ ...
- Web大文件(夹)上传(断点续传)控件-Xproer.HttpUploader6
版权所有 2009-2017荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...
- Win7获取管理权限修改Host文件以其他权限问题
——win7管理员权限修改Host文件——百度经验 win7管理员权限获取办法: win7管理员权限 获取办法——经验——百度 win7最高权限获取: win7最高权限 获取——百度经验
- IIS 配置错误:不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。 HTTP 错误 500.19
因为 IIS 7 采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许更改.运行命令行 %windir%\system32\inetsrv\appcmd unlock conf ...
- Android NDK开发初步
在配置好NDK开发之后就能够使用C/C++开发android了.以下以一个HelloWorld项目来说明 1.新建一个Androidproject 新建一个HelloWorldproject 代码例如 ...
- 【转】Android7.0版本以上的手机Eclipse无法打出LogCat
本来想用Eclipse连下手机看下log的,结果LogCat没打出来任何信息,起初怀疑是我的DDMS有问题,结果连了下我老大的手机,完美打出log,看了下Android系统,老大的是6.0的,我的7. ...
- 语法之知识点的改进(Func/Action)
上一章我们讲到关于面向对象思想上C#和JAVA之差别.笔者分别从面向对象的三大特性入手.而本章主要讲一些C#改进的知识点.在.NET Framework 2.0之后出现很多新的知识点.这些知识点更是让 ...
- 校验时间冲突SQL写法
校验时间是否有冲突,时间是就是看两个时间断是否有交集(写法有两种): a.SELECT * FROM xxx WHERE (startTime > a AND startTime < b) ...
- DockPanel的使用与技巧
DockPanel的使用 1.建立一个WinForm工程,默认生成了一个WinForm窗体Form1. 2.引用—>添加引用—>浏览—>weiFenLuo.winFormsUI.Do ...