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 结构图:


最新文章

  1. Spring系列之依赖注入的方式
  2. Java连接MYSQL 数据库的连接步骤
  3. MST:Agri-Net(POJ 1258)
  4. 再说virtual
  5. C++ 类里面,函数占用存储空间问题
  6. 原生态Ajax实例
  7. [转] 多线程下变量-gcc原子操作 __sync_fetch_and_add等
  8. myeclipse &#39;no default proposals&#39; when use &#39;alt + /&#39;.
  9. CSU 1160 把十进制整数转换为十六进制,格式为0x开头,10~15由大写字母A~F表示
  10. 顺序容器的insert使用方法
  11. Javascript规范
  12. cookie笔记(一)
  13. java 对象的序列化与反序列化
  14. UI自动化测试(三)对页面中定位到的元素对象做相应操作
  15. IIS 添加 MIME
  16. android 环境的配置
  17. CSS在项目中常用的属性总结
  18. 【C#】简单的发送socket字符串
  19. 基于epoll封装的事件回调miniserver
  20. MongoDB day04

热门文章

  1. MySQL 优化、设计规则浅谈
  2. Redis(六):java里常用的redis客户端(Jedis和Redisson)
  3. C与C++在形參的一点小差别
  4. Android错误之Location of the Android SDK has not been setup in the preferences
  5. 小鬼PSer
  6. visual C++ &amp; Makefile
  7. iOS block-base 动画简单用法+关键帧动画设置线性变化速度的问题
  8. python 基础 5.4 类的私有属性和私有方法
  9. PCA tries to preserve linear structure, MDS tries to preserve global geometry, and t-SNE tries to preserve topology (neighborhood structure)
  10. zendstudio 13.0