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依赖:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <parent>
 6         <artifactId>Spring</artifactId>
 7         <groupId>cn.pb</groupId>
 8         <version>1.0-SNAPSHOT</version>
 9     </parent>
10     <modelVersion>4.0.0</modelVersion>
11
12     <artifactId>01SpringBase</artifactId>
13     <packaging>jar</packaging>
14
15     <name>01SpringBase</name>
16     <url>http://maven.apache.org</url>
17
18     <properties>
19         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
20         <!--spring对应的版本号 方便后期修改版本号-->
21         <spring.version>4.2.1.RELEASE</spring.version>
22     </properties>
23
24     <dependencies>
25         <dependency>
26             <groupId>junit</groupId>
27             <artifactId>junit</artifactId>
28             <version>4.0</version>
29             <scope>test</scope>
30         </dependency>
31
32
33         <!--引入需要的spring 核心jar-->
34         <dependency>
35             <groupId>org.springframework</groupId>
36             <artifactId>spring-context</artifactId>
37             <version>${spring.version}</version>
38         </dependency>
39         <dependency>
40             <groupId>org.springframework</groupId>
41             <artifactId>spring-core</artifactId>
42             <version>${spring.version}</version>
43         </dependency>
44
45         <dependency>
46             <groupId>org.springframework</groupId>
47             <artifactId>spring-beans</artifactId>
48             <version>${spring.version}</version>
49         </dependency>
50
51         <dependency>
52             <groupId>org.springframework</groupId>
53             <artifactId>spring-expression</artifactId>
54             <version>${spring.version}</version>
55         </dependency>
56
57         <dependency>
58             <groupId>commons-logging</groupId>
59             <artifactId>commons-logging</artifactId>
60             <version>1.1.1</version>
61         </dependency>
62
63     </dependencies>
64
65
66 </project>

4、Spring 的配置文件:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xsi:schemaLocation="
 5         http://www.springframework.org/schema/beans
 6          http://www.springframework.org/schema/beans/spring-beans.xsd">
 7
 8     <!--接收程序给我们的bean对象
 9     id就是我们的一个标识
10     class是对应的实现类,class不能是接口
11     -->
12     <bean id="studentDaoImpl" class="cn.pb.dao.impl.StudentDaoImpl"></bean>
13
14
15     <!--配置service层的实例对象-->
16     <bean id="studentServiceImpl" class="cn.pb.service.impl.StudentServiceImpl">
17         <!--设值注入-->
18         <property name="dao" ref="studentDaoImpl"></property>
19      </bean>
20
21     <!--配置我们的student对象   lazy-init="true" 默认是false 按需加载-->
22     <bean id="student" class="cn.pb.bean.Student" lazy-init="true">
23         <property name="name" value="小黑"></property>
24         <property name="age" value="18"></property>
25     </bean>
26
27     <!-- 在spring的核心配置文件中  所有的bean默认都是单例模式
28        scope="singleton"  默认
29        scope="prototype"  原型
30        -->
31     <bean id="student2" class="cn.pb.bean.Student" scope="singleton">
32         <property name="age" value="40"/>
33         <property name="name" value="小黑2"/>
34     </bean>
35
36
37 </beans>

5、Spring 结构图:

				
时间: 2024-11-01 01:19:56

Spring笔记(基础知识)01的相关文章

hadoop学习笔记——基础知识及安装

1.核心 HDFS  分布式文件系统    主从结构,一个namenoe和多个datanode, 分别对应独立的物理机器 1) NameNode是主服务器,管理文件系统的命名空间和客户端对文件的访问操作.NameNode执行文件系统的命名空间操作,比如打开关闭重命名文件或者目录等,它也负责数据块到具体DataNode的映射 2)集群中的DataNode管理存储的数据.负责处理文件系统客户端的文件读写请求,并在NameNode的统一调度下进行数据块的创建删除和复制工作. 3)NameNode是所有

MongoDB基础知识 01

MongoDB基础知识  1. 文档  文档是MongoDB中的数据的基本单元,类似于关系型数据库管理系统的行. 文档是键值对的一个有序集.通常包含一个或者多个键值对. 例如: {”greeting" : "Hello, world!", "foo", 3} 2. 集合(collection) 集合就是一组文档,类似关系型数据库中的一张表. 3. 数据库(database) 多个文档组成集合,多个集合组成数据库.一个MongoDB实例可以承载多个数据库.

Spring框架基础知识

本人博客文章网址:https://www.peretang.com/basic-knowledge-of-spring-framework/ Spring框架简介 Spring , 一个开源的框架 , 由Rod Johnson创建. Spring是为了解决企业应用开发的复杂性而创建的 , 可以让简单的JavaBeans/POJO来实现之前只有EJB[1]才能完成的事情. Spring还提供了大量API简化与其他第三方框架的集成. 纵览Spring , 你会发现Spring可以解决非常多的问题 ,

[Java]Spring AOP基础知识-动态代理

Spring AOP使用动态代理技术在运行期织入增强的代码,为了揭示Spring AOP底层的工作机理,有必要对涉及到的Java知识进行学习.Spring AOP使用了两种代理机制:一种是基于JDK的动态代理:另一种是基于CGLib的动态代理.之所以需要两种代理机制,很大程度上是因为JDK本身只提供接口的代理,而不支持类的代理. 带有横切逻辑的实例 我们通过具体化代码实现上一节所介绍例子的性能监视横切逻辑,并通过动态代理技术对此进行改造.在调用每一个目标类方法时启动方法的性能监视,在目标类方法调

SQLServer学习笔记&lt;&gt;.基础知识,一些基本命令,单表查询(null top用法,with ties附加属性,over开窗函数),排名函数

Sqlserver基础知识 (1)创建数据库 创建数据库有两种方式,手动创建和编写sql脚本创建,在这里我采用脚本的方式创建一个名称为TSQLFundamentals2008的数据库.脚本如下:   同时往数据库表插入一些数据,用户后续对数据库的sql的练习.在这里有需要的可以下载相应的脚本进行数据库的初始化.我放到百度云上面,请戳 我:http://yun.baidu.com/share/link?shareid=3635107613&uk=2971209779,提供了<Sqlserver

《大话设计模式》笔记-基础知识2:面向对象基础知识

本书作者介绍每一种设计模式就是用类图(用的UML类图,其基础知识另文介绍)+面向对象语言小程序+人物对话解释知识点.本文就是介绍<大话设计模式>中所用到面向对象的基础知识(基于C#语言),方便阅读本书代码. 类与实例 (1)对象 一切事物皆为对象,对象就是看到.感觉到.听到.摸到等实实在在的东西.准确地说,对象是一个自包含的实体,用一组可识别的特性和行为来标识.面向对象编程,就是针对对象来进行编程的. (2)类 类就是具有相同的属性和功能的对象的抽象的集合.例子如下 "class&q

《大话设计模式》笔记-基础知识1:UML类图基础知识

好多计算机技术书籍或者文章中常用到UML类图,本书作者介绍每一种设计模式就是用类图+面向对象语言小程序(用的C#,其基础知识另文介绍)+人物对话解释知识点.本文就是介绍<大话设计模式>中所用到UML类图的基础知识. 上图是一个整体的图,特别要注意各种样式的箭头,下文分别用局部小图说明各知识点. 类 类图分三层: (1)      类名称,如果是抽象类就用斜体标识.本例,类名称是"动物",且其是一个抽象类. (2)      类特性,通常是字段和属性.本例,类特性是"

python基础知识 01 python模块

Python基础知识 (1)python模块(2)如何声明python变量(3)进制转换(4)格式化数字(5)单行注释和多行注释(6)单引号和双引号字符串(7)拼接字符串(8)长字符串 第一课:python模块 python模块 = 封装了API的library 我们先不讲如何定义模块 ,我们先讲如何引用模块 模块分为2类 1.python自身提供的模块 2.自定义模块 //这两种方法呢,我们引用的方式是一样的 引用模块的关键字为import 这个和Java的引用方式是一样的,但是 有很大的区别

Spring MVC基础知识整理?Spring+SpringMVC+Hibernate整合操作数据库

概述 Hibernate是一款优秀的ORM框架,能够连接并操作数据库,包括保存和修改数据.Spring MVC是Java的web框架,能够将Hibernate集成进去,完成数据的CRUD.Hibernate使用方便,配置响应的XML文件即可.由于spring3.x,基于asm的某些特征,而这些asm还没有用jdk8编译,所以采用Spring 3+JDK8就会报错,提示错误信息( java.lang.IllegalArgumentException),具体解决方案有:1.Spring 3+JDK7

Spring AOP基础知识

Spring AOP使用动态代理技术在运行期织入增强的代码,两种代理机制包括:一是基于JDK的动态代理,另一种是基于CGLib的动态代理.之所以需要两种代理机制,很大程度上是因为JDK本身只提供接口的代理,而不支持类的代理. 1.带有横切逻辑的实例 ForumService:包含性能监视横切代码 package com.yyq.proxy; public interface ForumService { void removeTopic(int topicId); void removeForu