框架应用:Spring framework (一) - IoC技术
IoC概念以及目标

IoC就是让原本你自己管理的对象交由容器来进行管理,其主要的目的是松耦合.
IoC发展史
既然IoC的目标是为了松耦合,那它怎么做到的?

最后目标:降低对象之间的耦合度,IoC技术加入了配置把编码中对象的耦合度降低了.
IoC的底层原理
IoC底层使用的技术包括:
(1)xml配置文件
(2)dom4j解决xml
(3)工厂设计模式
(4)反射

IoC应用入门
一.导入jar包
IoC是Spring framework的基础技术,所以需要导入基础包;

二.创建类,在类里面创建方法
需要创建交与容器的类模板(拥有getter和setter的POJO类)

三.创建spring配置文件,配置创建类
(1)spring的核心配置文件名称和位置不是固定的,
官方推荐放置于src下面,命名为applicationContext.xml
(2)引入schema约束


(3)配置对象创建

四.测试对象创建
xml配置文件头部提示错误
解决方法是把schema约束引入spring,把约束文件引入到spring中.


IoC的三种配置管理方式
xml
实例化的三种方式
第一种使用类无参构造(重点)
第二种使用静态工厂来进行实例化


第三种使用实例工厂创建


bean标签常用的属性
常用属性有id, class, name, scope
id用于创建标识
class键入类的全路径名,引入模板类
name和id功能一致,但name允许包含特殊字符
scope用于指定创建类的方式以及其使用范围,参数如下
-singleton 单例创建对象,也就是始终都复用同一个对象,不会进行第二轮的创建
-prototype 每次创建都会创建一个新的对象
-request 创建对象并放置到request域中
-session 创建对象并放置到session域中
-globalSession 用于实现单点登录功能,比如百度下有百度云,百度翻译,百度相册之类多个应用,但是你只要登录上一个位置,多个位置都可以使用登录信息,这就是单点登录;这个参数基本不会使用,因为有一种就redis的技术更好地实现了这种功能.
属性注入
属性注入三种方式

set方法注入属性,其中包含基础属性注入,对象属性注入,复合属性注入
基础属性注入


对象属性注入


复合属性的注入
1.数组
2.list集合
3.map集合
4.properties
<bean id="person" class="com.harry.ioc.test">
<!-- 数组 -->
<property name="arrs">
<list>
<value>引用名1</value>
<value>引用名2</value>
<value>引用名3</value>
</list>
</property>
<!-- list -->
<property name="list">
<list>
<value>引用名4</value>
<value>引用名5</value>
<value>引用名6</value>
</list>
</property>
<!-- map -->
<property name="map">
<map>
<entry key="aa" value="引用名7"></entry>
<entry key="bb" value="引用名8"></entry>
<entry key="cc" value="引用名9"></entry>
</map>
</property>
<!-- properties -->
<property name="properties">
<props>
<prop key="driverclass">com.mysql.jdbc.Driver</prop>
<prop key="username">root</prop>
</props>
</property>
</bean>
复合属性注入
有参构造函数注入属性

javaConfig类
注解
一.注解介绍
1.代码里特殊标记,使用注解可以完成功能
2.注解写法 @(属性名称=属性值)
3.注解可以使用在类,方法和属性之上
二.spring的注解开发导入包
1.core包

2.aop包

三.创建类和方法
四.创建spring配置文件引入新约束,开启注解扫描


五.注解创建对象
1.使用注解标记类

2.创建对象有四个注解标记

3.创建对象方式,单例还是多例

六.注解注入属性
1.创建service类,创建dao类


2.在service类使用注解注入dao
方式一.采用自动装载@Autowired

方式二.采用@Resource获取特定名称对象

七.配置文件和注解混合使用
1.配置文件创建对象注入容器

2.使用注解让容器实现属性注入

IoC和DI的区别所在
很多人认为IoC和DI是一个事物的两种说法,其实之间存在着细微的不同.
-IoC,控制反转,将对象交由容器进行管理;
-DI,依赖注入,将属性注入于对象之中;
-DI是依赖于控制反转技术的,如果使用IoC技术也就无法使用注入功能.
Spring整合web项目的原理
1 加载spring核心配置文件,

2 实现思想:把加载配置文件和创建对象过程,在服务器启动时候完成
3 实现原理
(1)ServletContext对象
(2)监听器
(3)具体使用:
- 在服务器启动时候,为每个项目创建一个ServletContext对象
- 在ServletContext对象创建时候,使用监听器可以具体到ServletContext对象在什么时候创建
- 使用监听器监听到ServletContext对象创建时候,
-- 加载spring配置文件,把配置文件配置对象创建
-- 把创建出来的对象放到ServletContext域对象里面(setAttribute方法)
- 获取对象时候,到ServletContext域得到 (getAttribute方法)
框架应用:Spring framework (一) - IoC技术的更多相关文章
- Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->使用spring framework的IoC容器功能----->方法一:使用XML文件定义beans之间的依赖注入关系
XML-based configuration metadata(使用XML文件定义beans之间的依赖注入关系) 第一部分 编程思路概述 step1,在XML文件中定义各个bean之间的依赖关系. ...
- Spring框架简介 Spring Framework Introduction
Introduction The Spring Framework provides a comprehensive programming and configuration model for m ...
- 框架应用:Spring framework (二) - AOP技术
基础概念 线程中的方法栈 java程序虚拟机启动时会载入程序码,虚拟机会为每一条正在运行的线程生成一个方法调用栈,线程以方法运行为执行单位. AOP概念以及目标 AOP是面向切面编程,其实就是在不修改 ...
- Spring Framework Part2 IOC
spring serious of blog edit by 马士兵教育 IoC概念 IoC是一个概念,是一种思想,其实现方式多种多样.当前比较流行的实现方式之一是DI. 基于XML的DI Appli ...
- Spring Framework之IoC容器
Spring IoC 概述 问题 1.什么是依赖倒置? 2.什么是控制反转? 3.什么是依赖注入? 4.它们之间的关系是怎样的? 5.优点有哪些? 依赖倒置原则 (Dependency Inversi ...
- Spring Framework Part3 IoC and Dynamic Proxy
spring serious of blog edit by 马士兵教育 Maven方式创建Spring工程 工程创建 1.新建项目 选择Maven Project 2.勾选 Create a sim ...
- JavaIOC框架篇之Spring Framework
欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...
- 译:Spring框架参考文档之IoC容器(未完成)
6. IoC容器 6.1 Spring IoC容器和bean介绍 这一章节介绍了Spring框架的控制反转(IoC)实现的原理.IoC也被称作依赖注入(DI).It is a process wher ...
- Spring框架学习(2)IOC学习
内容源自:IOC理解 spring ioc注入的三种方式 ioc工厂bean深入理解 耦合性,在java中表现为类之间的关系,耦合性强说明类之间的依赖关系强: 侵入性:框架对代码的侵入: 在传统 ...
随机推荐
- 【Ubuntu 16】 SSH免密码登录
免密码登录时两个机器的普通用户名都要相同,这里都是dream361 ,主机名可以不同,这里的主机名都是ubuntu 1.目前有两台机器master 和 slave 在这两台机器上都安装并启动ssh服务 ...
- composer安装报错Composer throws [ReflectionException] Class Fxp\Composer\AssetPlugin\Repository\NpmRepository does not exist
解决方法:删除C:\Users\Administrator\AppData\Roaming\Composer\vendor\fxp下的文件
- Java6和Java8在Windows上共存
0x00 需求 最近在做一个Android的项目,一开始安装的是Java8用于项目的开发.但是在项目后期需要用到drozer用于检测项目的安全性,要搭建drozer的测试环境必须要使用Java6,否则 ...
- Java面向对象-方法的值传递和引用传递
Java面向对象-方法的值传递和引用传递 0 发布时间:『 2016-08-21 14:21』 博客类别:Java核心基础 阅读(197) 评论(0) Java面向对象-方法的值传递和引用传递 方 ...
- Html5笔记之第七天
视频格式 格式 MIME-type MP4 video/mp4 WebM video/webm Ogg video/ogg MP4 = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 ...
- Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
第一讲 File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...
- MatplotLib常用基本操作
本文记录matlibplot常用基本操作,都是基本功能,不涉及复杂联合操作,其中各用法详细用法可参考官网: 1. 基本画图操作 ##mofan_matplotlib.pyplot import mat ...
- CentOS7.3虚拟机扩展数据磁盘
操作之前需要重点查看: 由于扩容磁盘的操作非同小可,一旦哪一步出现问题,就会导致分区损坏,数据丢失等一系列严重的问题,因此建议:在进行虚拟机分区扩容之前,一定要备份重要数据文件,并且先在测试机上验证以 ...
- Spring @ResponseBody 返回中文乱码问题
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt102 今天在使用spring 的时候,发现中文返回的是乱码. 经过研究发现, ...
- 解决MVC模式文件下载附件中文名称乱码
解决如下: 进行url编码:Server.UrlPathEncode(file.AttachmentName) return File(file.TempWorkPath, CommonTools.G ...