1.Spring作用:

1.生态体系庞大,全能型选手!【springmvc是其一个子模块,jdbcTemplate能直接操作数据库!】

2.将其他组件粘合在一起

3.IOC容器和AOP[Aspect Oreinted Programming]:

Spring的Ioc[Inverse of Controller]机制(控制反转和依赖注入)正是用在此处。

Spring的Ioc(控制反转和依赖注入)

控制反转[Ioc]:就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。

控制反转是一种思想,其具体实现就是依赖注入!

依赖注入[DI:Dependency Injection]:组件之间的依赖关系由容器在运行期决定,由容器动态的将某种依赖关系注入到组件之中。

2.IOC容器细节

1.使用IOC容器创建对象

2.使用IOC容器在创建对象的同时,给对象的属性赋值

3.在创建对象的过程中,实现组件对象之间的自动装配

3.搭建Spring IOC容器需要的开发环境

1.导入IOC容器需要的jar包

spring-beans-4.0.0.RELEASE.jar

spring-context-4.0.0.RELEASE.jar

spring-core-4.0.0.RELEASE.jar

spring-expression-4.0.0.RELEASE.jar

commons-logging-1.1.3.jar

2.创建Spring配置文件[Spring bean Configuration File]

4.实验

实验1:

<!--实验1:通过IOC容器创建对象,并为属性赋值  -->

<!-- 需要由IOC容器创建对象的全类名 -->

<!-- 为了便于从IOC容器中获取book对象,声明一个一个唯一的id值 -->

<bean id="book01" class="com.neuedu.spring.bean.Book">

<property name="bookId" value="2001"></property>

<property name="bookName" value="三国演义"></property>

<property name="author" value="罗贯中"></property>

<property name="price" value="22.5"></property>

</bean>

@Test

public void test01() {

//1.创建IOC容器自身的对象

//指定配置文件以类路径为基准的配置文件名

ApplicationContext ioc= new ClassPathXmlApplicationContext("bean.xml");

//2.从IOC容器中获取指定的对象

Object bean = ioc.getBean("book01");

System.out.println(bean);

}

注意:  ①IOC容器本身对象创建时,会将配置文件中配置好的bean先创建出来

②默认是单实例的,只创建bean的一个对象

③如果设置bean的scope属性为prototype,那么创建bean的对象就是多实例的,在获取的时候创建,每次获取对象都会创建新的

④.从IOC容器中获取对象

①根据bean的id获取

②根据bean的类型获取:要求容器中指定类型的bean是唯一的

bean的后置处理器:  1.指的是在bean的初始化方法前后执行操作的专门的对象。

2.自定义的后置处理器:

1)需要实现接口:org.springframework.beans.factory.config.BeanPostProcessor .

2) 做相应的配置就好!

实验2:通过p名称空间为bean赋值

实验3:测试bean的作用域,分别创建单实例和多实例的bean

创建bean

获取bean

结果和总结

实验4: IOC中bean对象的创建时机

构造函数

test中什么都没写

结果:

实验5:通过构造器为bean的属性赋值和通过index属性指定参数的位置

指定顺序时,按照从0开始的方式指定

不指定顺序时,默认按照实体类中的顺序

结果都一样:

实验6: 给bean的级联属性赋值

配置:

测试:

结果:

实验7.创建带有生命周期方法的bean

实体类中写上:

配置文件中的:

测试:

结果:

实验8.bean之间的依赖 depends-on=order被依赖的对象会先创建

tea依赖于stu:

结果:

实验9.通过继承实现bean配置信息的重用

测试:

结果:

这个结果说明:继承的时候,没有的属性会从被继承的那里得到

实验10.通过abstract属性创建一个模板bean

实验11.测试使用null值

double默认是0.0 int 为0

实验12.引用其他bean

结果:

实验13.引用内部bean

实验14.使用List类型的集合属性

实验15.使用Map类型的集合属性

                                    

实验16.使用prop子元素为Properties类型的属性赋值

实验17.配置通过静态工厂方法创建的bean

静态工厂类:

配置静态工厂类:

测试:

结果:

实验18.配置通过实例工厂方法创建的bean

实例工厂类

配置

测试

结果

实验19.配置FactoryBean

创建:

配置:

测试:

结果:

实验20.测试bean的后置处理器

创建:

配置:

测试:

结果:

实验21.数据库连接池的使用

创建:

配置:

测试:

结果:

实验22.加载外部属性文件

创建:

配置:

测试:

结果:

实验23.基于XML的属性装配

手动装配:

创建:

配置:

测试:

结果:

自动装配---通过类型:

配置:

测试:

结果:

自动装配---通过名字:

配置:

测试:

结果:

实验24.使用注解配置bean

@Component 将当前类声明为IOC容器中的一个普通的组件
                          @Controller 将当前类声明为IOC容器中的一个控制器组件
                          @Service 将当前类声明为IOC容器中的业务逻辑层组件
                          @Repository 将当前类声明为IOC容器中的一个持久化层组件
                          Spring根据上述注解其实并不能分辨当前类是否真的是一个控制器或Dao,即使标记的类和注解不对应也没有语法错误。但在实际工作中,肯定要将专门的注解标记在对应的类上面。

使用基于注解的bean的配置,需要额外导入一个jar包:spring-aop-4.0.0.RELEASE.jar

需要设置自动扫描的包   < context:component-scan base-package ="com.neuedu.ioc.bean"/>

使用注解后,默认按照类名首字母小写作为id的值,也可以使用value属性指定id,value属性名也可以省略注解

实验25.指定扫描包时要(不)包含的类

配置时体现:

实验26.使用注解进行自动装配详细说明

170826-关于spring的知识点及练习的更多相关文章

  1. Spring MVC知识点整理

    网上Spring MVC相关知识点的介绍已经有很多了,但是大部分文章都是介绍其中的一部分知识点. 本文希望能够向读者做一个基本整体的介绍,首先我们先来了解下Spring MVC的基础接口和组件.   ...

  2. Spring IOC知识点一网打尽!

    前言 只有光头才能变强 回顾前面: 给女朋友讲解什么是代理模式 包装模式就是这么简单啦 单例模式你会几种写法? 工厂模式理解了没有? 在刷Spring书籍的时候花了点时间去学习了单例模式和工厂模式,总 ...

  3. 2019年Spring核心知识点整理,看看你掌握了多少?

    前言 如今做Java尤其是web几乎是避免不了和Spring打交道了,但是Spring是这样的大而全,新鲜名词不断产生,学起来给人一种凌乱的感觉,在这里总结一下,理顺头绪. Spring 概述 Spr ...

  4. Spring AOP 知识点入门

    一.基本知识点 1.AOP概念 AOP(Aspect-Oriented Programming), 即 面向切面编程, 它与 OOP( Object-Oriented Programming, 面向对 ...

  5. 精益求精!Spring Boot 知识点全面回顾,带你重新细读源码!

    约定优于配置 Build Anything with Spring Boot:Spring Boot is the starting point for building all Spring-bas ...

  6. 面试:Spring面试知识点总结

    Spring知识点总结 1. 简介一下Spring框架. 答:Spring框架是一个开源的容器性质的轻量级框架.主要有三大特点:容器.IOC(控制反转).AOP(面向切面编程). 2. Spring框 ...

  7. Spring Boot 知识点总结

    现在仅总结重要和实用的知识点,更加全面的请见链接:1.:2.. 微服务:架构风格(服务微化):一个应用应该是一组小型服务:可以通过HTTP的方式进行互通:微服务:每一个功能元素终都是一个可独立替换和独 ...

  8. [Java] Spring MVC 知识点

    云图: @Service 用于标注业务层组件. 在 Spring-servlet 配置xml中,component-scan 标签默认情况下自动扫描指定路径下的包(含所有子包),将带有@Compone ...

  9. Spring重要知识点整理

    一.IOC(Inversion of Control):控制反转 (1)Spring Core最核心部分 (2)需要先了解依赖注入(Denpendency Injection)/把底层类作为参数传递给 ...

  10. spring AOP知识点总结以及日志的输出

    AOP的作用就是在基于OCP在不改变原有系统核心业务代码的基础上动态添加一些扩展功能.通常应用于日志的处理,事务处理,权限处理,缓存处理等等 首先,使用AOP需要添加的依赖有:spring-conte ...

随机推荐

  1. ansible-playbook -l 选项

    -l <SUBSET>, --limit <SUBSET> further limit selected hosts to an additional pattern 限制脚本 ...

  2. 【Python基础】_2 Python基本语法与常识(迭代优化中...)

    2 Python的基本语法 为了保证Python解释器能顺利编译所编写的代码,也为了程序员对自己和别人所编写的程序易于阅读.维护,对编程语言的语法做一些基本约定是非常必要的. 2.1 编程方式 2.1 ...

  3. unittest中的断言方法

    方法        用途 assertEqual(a,b)      a=b assertNotEqual(a,b)    a!=b assertTrue(x)     x为True assertFa ...

  4. Linux cat 多行写入文件防止变量替换

    Linux cat 多行写入文件防止变量替换  问题描述 对多个变量及多行输出到文件,存在变量自动替换,当使用cat<<EOF不想对内容进行变量替换.命令替换.参数展开等 问题解决 转义特 ...

  5. lb开金矿 QDUOJ 数论

    lb开金矿 QDUOJ 数论 原题链接,点我进去 题意 大家都知道lb有n个小弟(编号从2到n+1),他们可以按照规则传递信息:某天编号为i的小弟收到信息后,那么第二天他会给编号为j的小弟传达信息,其 ...

  6. 【输入法】向Android端Gboard字典中导入PC端搜狗细胞词库

    [输入法]向Android端Gboard字典中导入PC端搜狗细胞词库 环境 Android 5.1.1 Gboard 8.7.10.272217667-release -armeabi-v7a PC端 ...

  7. 牛客练习赛51 C 勾股定理

    链接:https://ac.nowcoder.com/acm/contest/1083/C 题目描述 给出直角三角形其中一条边的长度n,你的任务是构造剩下的两条边,使这三条边能构成一个直角三角形. 输 ...

  8. some problem

    CF1257F Make Them Similar $solution:$ 折半搜索后考虑如何维护两个数组的和,可以将 $A$ 中每个数减 $A_1$ ,$B$ 中每个数被减 $B_1$ ,$map$ ...

  9. 02.AutoMapper 之扁平化(Flattening)

    https://www.jianshu.com/p/65099590c930   扁平化(Flattening) 对象映射器的常见用法是将一个复杂对象模型扁平化为一个简单模型.例如您有一个以下复杂模型 ...

  10. ubuntu14.04首次安装.md

    ubuntu14.04 安装后的工作 1.换软件源 sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup 网易163更新服务器(广东广州 ...