SSM三大框架从0到1,无障碍学习,萌新可入《二》
DI(依赖注入)
1.DI概念
DI即依赖注入,就是将SpringIOC创建的对象进行属性的设置。
DI有两种方式:
设置器注入
构造器注入
2.设置器注入
利用javabean的set方法进行属性注入
保证javabean的属性具有set设置器:
特别注意,类属性 不等于 javabean的bean属性
javabean的bean属性只看是否提供了set或get方法
a.基本类型的注入
基本数据类型、String类型性
<!--基本类型(基本数据类型、String类型)设置-->
<property name="name"value="zs"></property>
<property name="age"value="19"></property>
b.集合类型的注入
<!--集合类型-->
<property name="list"><list><value>v1</value><value>v2</value><value>v3</value></list>
</property>
<property name="set"><set><value>v1</value><value>v2</value><value>v3</value><value>v2</value></set>
</property>
c.map类型注入
<!--Map类型-->
<property name="map"><map><entrykey="k1"value="v1"></entry><entrykey="k2"value="v2"></entry><entrykey="k3"value="v3"></entry><entrykey="k2"value="v4"></entry></map>
</property>
d.Properties类型注入
<!--Properties-->
<property name="props"><props><propkey="pk1">pv1</prop><propkey="pk2">pv2</prop><propkey="pk3">pv3</prop></props>
</property>
e.自定义bean的注入
<bean id="dog"class="cn.xxxx.domain.Dog"><propertyname="name"value="旺财"></property><propertyname="age"value="5"></property>
</bean><bean id="cat"class="cn.xxxx.domain.Cat"><propertyname="name"value="汤姆"></property><propertyname="age"value="4"></property>
</bean>
<bean id="hero"class="cn.xxxx.domain.Hero"><propertyname="name"value="亚瑟"></property><propertyname="age"value="55"></property><propertyname="dog"ref="dog"></property><propertyname="cat"ref="cat"></property>
</bean>
f.自定义bean的注入 - 自动装配
byName | 根据当前bean的bean属性名寻找该id的bean进行注入 |
---|---|
byTaype | 根据当前bean的bean属性类型寻找该类型的bean记性注入,这种方式如果找到多个bean则抛出异常 |
<bean id="dog"class="cn.xxxx.domain.Dog"><propertyname="name"value="旺财"></property><propertyname="age"value="5"></property>
</bean><bean id="cat"class="cn.xxxx.domain.Cat"><propertyname="name"value="汤姆"></property><propertyname="age"value="4"></property>
</bean><bean id="tiger1"class="cn.xxxx.domain.Tiger"><propertyname="name"value="跳跳虎"></property><propertyname="age"value="9"></property>
</bean><bean id="tiger2"class="cn.xxxx.domain.Tiger"><propertyname="name"value="小帅虎"></property><propertyname="age"value="8"></property>
</bean><!--
自动装配-自动进行自定义bean类型的属性设置byName
找到和当前bean的javabean属性名相同的id的bean,自动设置byType
找到和当前bean的javabean属性类型相同的bean,自动设置
**由于Spring容易可以配置多个id不同但类型相同的bean,所以通过ByType方式自动装配bean的时候,有可能同一个属性找到多个对应的bean,此时会抛出异常
--><bean id="hero"class="cn.xxxx.domain.Hero"autowire="byType"><propertyname="name"value="亚瑟"></property><propertyname="age"value="55"></property><!--<propertyname="dog"ref="dog"></property><propertyname="cat"ref="cat"></property><propertyname="tiger"ref="tiger"></property>--></bean>
3.基于构造器的注入
有的bean没有set方法而是通过构造方法进行属性设置的,此时Spring同样支持通过构造 器进行属性注入。
package cn.xxxx.domain;public class Person {private String name;private int age;private Dog dog;public Person() {}public Person(String name, int age, Dog dog) {this.name = name;this.age = age;this.dog = dog;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +", dog=" + dog +'}';}
}
进行配置:
<bean id="dog" class="cn.xxxx.domain.Dog"><property name="name" value="旺财"></property><property name="age" value="5"></property>
</bean><bean id="person" class="cn.xxxx.domain.Person"><!--name:为构造器中的哪个名字的参数设定值type:为构造器中的哪个类型的参数设定值index:为构造器中第几个参数设定值,以0开始value:为该属性设定什么值ref:如果参数为自定义bean类型,通过ref引用自定义bean类型--><constructor-arg name="name" type="java.lang.String" index="0" value="zs" ></constructor-arg><constructor-arg name="age" value="19"></constructor-arg><constructor-arg index="2" ref="dog"></constructor-arg></bean>
大家看到这里是不是会觉得框架不是说很方便吗?怎么这么麻烦。下次我们开始说注解方式的实现。今天先到这里,我们下次见。
------在下亦从文,弃武从文
SSM三大框架从0到1,无障碍学习,萌新可入《二》相关推荐
- SSM三大框架从0到1,无障碍学习,萌新可入《一》
框架概述 1.框架的概念 所谓的框架其实就是程序的架子. 把web开发中和业务无关的重复部分提取成通用的程序的架子,就是框架. 2.javaweb开发中的框架SSH 老三大框架:SSH Struts2 ...
- (Spring+SpringMVC+MyBatis)SSM三大框架整合教程
目录 一.基本概念 1.Spring 2.SpringMVC 3.MyBatis 二.开发环境搭建 三.Maven Web项目创建 四.SSM整合 1.Maven引入需要的JAR包 2.Spring与 ...
- SSM三大框架+SpringMVC的工作原理及其流程
SSM三大框架+SpringMVC的工作原理及其流程 一.SSM中各层作用及关系 1.持久层:DAO层(mapper层)(属于mybatis模块) DAO层(Mapper层):主要负责与数据库 ...
- JavaEE ssm三大框架黑马视频
链接:https://pan.baidu.com/s/1JysWR5eZ49cDRtrDIJqcBQ 密码:diyr ** 里面包含 ** spring .mybatis .springmvc以及这三 ...
- SSM三大框架超详细总结(适合你重新回顾)
目录 1.1 概念 1.2 Mybatis优点 1.3 Mybatis架构 1.4 底层原理 1.5 Mybatis缓存 1.6 常见面试题 2.1 概念 2.2 Spring优点 2.3 Sprin ...
- SSM三大框架整合(Spring+SpringMVC+MyBatis)
文章目录 SSM整合 一.导入依赖 1.1 Spring依赖 1.2 SpringMVC依赖 1.3 MyBatis依赖 二.配置文件 2.0 Web.xml 配置文件 2.1 Spring的配置文件 ...
- 通俗易懂-SSM三大框架整合案例(SpringMVC+Spring+Mybatis)
前言: 学习B站UP狂神说视频笔记整理视频链接 相关代码已经上传至码云:码云链接 前期准备 项目介绍 demo项目是一个简单的图书管理系统,主要功能为表单数据的增删改查 Web端使用JSP+Boots ...
- SSM三大框架的运行流程、原理、核心技术详解!
一.Spring部分 1.Spring的运行流程 第一步:加载配置文件ApplicationContext ac = new ClassPathXmlApplicationContext(" ...
- SSM三大框架整合Springfox(Swagger2)详细解决方案
由于项目中使用的是前后端分离,所以,频繁的需要进行数据的交互和接口的调用,所以需要api文档的使用,这样就更加的方便,于是就找到了swagger这个东东,还是很好用.下面介绍一下如何整合到spring ...
最新文章
- myeclise 安装
- ruby1.8.6 安装watir是出现问题记录
- 云计算呼叫中心_SaaS云呼叫中心系统只用于销售或客服?
- kodi android 键盘,KODI按键映射,看IPTV按键设置
- 科发财务凭证登陆出现错误:40002
- drools 7.x 决策表转drl
- (二)PowerLink理论知识
- hue 安装 + authrization manager安装
- sql select 0 字段 某字段是不在指定的表
- 用C语言调用.bat批处理命令
- Feem(局域网文件传输工具)v4.3.0官方版
- LeapFTP 显示服务器端文件名乱码问题处理
- 基于微信小程序的西餐外卖系统的设计与实现NodeJS-计算机毕业设计
- 如何批量制作准考证——《超级处理器》应用
- 精确率(precision)、召回率(recall)、准确率(accuracy)
- 甲骨文混合云战略融合数据库技术
- 【GANs学习笔记】(二)GANs大家族分类
- P0口与其他口的区别
- 【转载】 Android MediaCodec stuff
- 关于爬取企业信息类的爬虫(一)