框架应用: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中表现为类之间的关系,耦合性强说明类之间的依赖关系强: 侵入性:框架对代码的侵入: 在传统 ...
随机推荐
- centos7.1磁盘分区 格式化 挂载
1.fdisk -l 查看磁盘状态 2.将 /dev/sdb 分区 fdisk /dev/sdb 3.对分区进行格式化 mkfs -t ext3 /dev/sdb 4.挂载/dev/sdb 到/hom ...
- 用EditPlus编辑器配置C#开发环境
用EditPlus配置配置C#开发环境... -------------------- ---------------------------- 配置步骤: 1.打开EditPlus,找到 工具 —& ...
- go web 第三天 学习笔记 --mysql
CREATE TABLE `userinfo` ( `uid` INT() NOT NULL AUTO_INCREMENT, `username` VARCHAR() NULL DEFAULT NUL ...
- 迈向angularjs2系列(7):表单
目录 一:校验表单的使用 1.搭建脚手架 2.校验表单的使用 3.select下拉列表的用法 一: 校验表单的使用 对于CRUD型的应用,表单是必备组件. 1.搭建脚手架 git clone http ...
- 题目1522:包含min函数的栈
#include <iostream> #include <cstdio> #include <stack> using namespace std; int ma ...
- Retrofit2.0源码解析
欢迎访问我的个人博客 ,原文链接:http://wensibo.net/2017/09/05/retrofit/ ,未经允许不得转载! 今天是九月的第四天了,学校也正式开学,趁着大学最后一年的这大好时 ...
- ABP 框架学习-01篇
从来没有自己写过太多的技术性文章,博客里面的文章都是拷贝别人的东西,做一个笔记功能给自己用的.最近觉得应该写点自己的学习博客 https://aspnetboilerplate.com/ ABP框架, ...
- 02-TypeScript中新的字符串
TypeScript中引入了字符串模板,通过字符串模板可以方便的实现字符串换行的连接.方便变量等. 1.在WebStorm中新建一个文件,后缀名为ts. 在建立ts文件时,WebStorm会问你是否需 ...
- Jquery 绑定标签事件
为子元素绑定: $('#foreachResult').delegate('td', 'click', function () { alert($(this).text()); ...
- C# 文件的上传和下载
本文主要介绍一下,在APS.NET中文件的简单上传于下载,上传是将文件上传到服务器的指定目录下,下载是从存入数据库中的路径,从服务器上下载. 1.上传文件 (1)页面代码 <table alig ...