1Spring注入小结
Spring注入小结 (在Application.xml中)
Spring学习笔记 周芋杉2021/5/14
1.基本注入类型注入
注入前的准备
<bean id="#配置文件的唯一标识" class="#Spring工厂将要创建的类的全限名命名">
<property name="#填写所赋予的变量">
#注入值
</property>
</bean>
JDK类型注入
1.8种基本类型加Stirng
#注入值
<value>#值</value>
2.数组
<list>
<value>#值1</value>
<value>#值2</value>
<value>#值3</value>
</list>
3.set集合
- set集合是无序的,取出值不会像数组一样有序
- set集合有泛型约束如set
- 如果没有泛型约束 set可以装任何类型的值
#有泛型约束 8种基本类型加Stirng
<set>
<value>#值1</value>
<value>#值2</value>
<value>#值3</value>
</set>
#无约束
<set>
<ref bean #用户自定义类型
<set #还可存放set类型
</set>
4.list集合
<list>
<value>#值1</value>
<value>#值2</value>
</list>
#和set类似
<list>
<ref bean #用户自定义类型
<set #还可存放set类型
</list>
5.Map集合
<map>
#entry代表一个键值对
<entry>
<key>
<value>#键值</value>#如果Map是字符串泛型则内嵌<value></value>
</key>
<value>#值</value>
</entry>
</map>
6.Properties
Properties是一种特殊的Map 键值都是String
<props>
<prop key="#键1">#直接写值1</prop>
<prop key="#键2">#直接写值2</prop>
</props>
2.自定义类型注入
方式一
步骤
1. 在实现类中实现自定义的类型
2. 在实现类中提供set和get方法
3. 在配置文件中注入
例如:
实现类MySpringTest:
实现自定义类型UserDAO
//实现自定义类型
private UserDAO testDao;
//提供set和get方法
public UserDAO getTestDao() {
return testDao;
}
public void setTestDao(UserDAO testDao) {
this.testDao = testDao;
}
配置文件中注入
<bean id="testDao" class="org.MySpringTest">
<property name="testDao">
<bean class="org.UserDAOImpl"/>
</property>
</bean>
注:在property里的bean class是实现了testDao这个自定义类型,但是要实现这个自定义类的的实现。此处为UserDAO接口的实现类UserDAOImpl
存在的问题
1.配置文件的冗余,如果需要多次使用UserDAO则需要多次使用注入
2.多次创建对象会使得JVM内存紧张
方式二
先实现出自定义类的实现
<bean id="DAO"class="org.UserDAOImpl"/>
在实现类的配置文件里面引用自定义类
<bean id="testDao" class="org.MySpringTest">
<property name="testDao">
<ref bean="DAO"/>
</property>
</bean>
实现了只创建一次多次使用节约内存
3.简化写法注入
8种基本类型加Stirng
<bean id="#配置文件的唯一标识" class="#Spring工厂将要创建的类的全限名命名">
<property name="#填写所赋予的变量" value="#注入值">
</bean>
用户自定义类型
<bean id="#配置文件的唯一标识" class="#Spring工厂将要创建的类的全限名命名">
<property name="#填写所赋予的变量">
<ref bean="#引用的id"/>
</property>
</bean>
P命名空间
在使用P命名空间以前要在标头beans加入
xmlns:p="http://www.springframework.org/schema/p"
8种基本类型加Stirng
<bean id="#配置文件的唯一标识"
class="#Spring工厂将要创建的类的全限名命名"
p:#变量名="#值"/>
自定义
<bean id="#配置文件的唯一标识"
class="#Spring工厂将要创建的类的全限名命名"
p:#变量名-ref="#值"/>
4.构造注入
1.普通构造方法
开发步骤:
1.提供有参数构造方法(有参数!)
2.提供配置文件注入
例如:参数构造方法
public class Customer implements Serializable {
private String name;
private int age;
public Customer(String name,int age){
this.age=age;
this.name=name;
}
参数顺序从左到右
在配置文件注入
<bean id="customer" class="org.constructer.Customer">
<constructor-arg value="SY"/>
<constructor-arg value="21"/>
</bean>
结果为name=SY age=21
2.重载的构造方法
1.不同的参数数量
Spring通过constructor-arg的数量辨别
2.相同的参数数量,Spring通过参数类型判断,引入type
<constructor-arg type="java.lang.String" value="SY"/>
1Spring注入小结的更多相关文章
- sqlmap注入小结
sqlmap注入时: 1.判断可注入的参数 2.判断可以用那种SQL注入技术来注入 3.识别出哪种数据库 4.根据用户选择,读取哪些数据 sqlmap支持五种不同的注入模式: 1.基于布尔的盲注,即可 ...
- SQL注入小结
分类学习有利于条理化知识,大致的SQL注入分为三种: 1.BealeanBase 2.TimeBase 3.ErrorBase 1.从最简单的说起,基于布尔类型是最常见的SQL注入方式 select ...
- spring 依赖注入 小结
通过 @Autoiwired注解 和接口 注入实现这个接口的实现类 的 类 也必须是 可注入的(必须归spring容器所管理)
- asp.net mvc4 简单使用Autofac依赖注入小结
1,首先使用 NuGet下载适当的Autofac版本 文件一,Autofac.3.5.2 文件二,Autofac.Mvc4.3.1.0 1,接口类 public interface IReposito ...
- SQL手工注入小结
第一步先把IE菜单=>工具=>Internet选项=>高级=>显示友好 HTTP 错误信息前面的勾去掉.否则,不论服务器返回什么错误,IE都只显示为HTTP 500服务器错误, ...
- [极客大挑战 2019]HardSQL updatexml报错注入小结
报错注入链接: https://www.cnblogs.com/richardlee97/p/10617115.html报错原因: 其原因主要是因为虚拟表的主键重复.按照MySQL的官方说法,grou ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(28)-系统小结
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(28)-系统小结 我们从第一节搭建框架开始直到二十七节,权限管理已经告一段落,相信很多有跟上来的园友,已经 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(14)-系统小结
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(14)-系统小结 不知不觉已经过了13讲,(本来还要讲多一讲是,数据验证之自定义验证,基于园友还是对权限这 ...
- 对MYSQL注入相关内容及部分Trick的归类小结
前言 最近在给学校的社团成员进行web安全方面的培训,由于在mysql注入这一块知识点挺杂的,入门容易,精通较难,网上相对比较全的资料也比较少,大多都是一个比较散的知识点,所以我打算将我在学习过程中遇 ...
随机推荐
- 你说,怎么把Bean塞到Spring容器?
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 小傅哥,你是怎么学习的? 有很多初学编程或者码了几年CRUD砖的小伙伴问我,该怎么学 ...
- Android学习之简易版的新闻应用
•准备工作 新建一个项目,命名为 FragmentBestProject,并选择 Empty Activity: 并将项目的模式结构改为 Project 模式: •进入主题 首先,准备好一个新闻实体类 ...
- [Fundamental of Power Electronics]-PART I-4.开关实现-4.2 功率半导体器件概述
4.2 功率半导体器件概述 功率半导体设计中最根本的挑战是获得高击穿电压,同时保持低正向压降和导通电阻.一个密切相关的问题是高压低导通电阻器件的开关时间更长.击穿电压,导通电阻和开关时间之间的折衷是各 ...
- MyBatis笔记(三)
1. ResultMap 查询结果为null:要解决属性和字段名不一致的问题 我们先来看下步骤: 数据库中的字段名 Java中的实体类 public class User { private i ...
- JS基础学习第七天
包装类 在JS中为我们提供了三个包装类:String() Boolean() Number()通过这三个包装类可以创建基本数据类型的对象例子: 123 var num = new Number(2); ...
- 201871010129-郑文潇 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-daizh ...
- 03.ElementUI源码学习:代码风格检查和格式化配置(ESlint & Prettier)
书接上文.在团队协作中,为避免低级Bug.以及团队协作时不同代码风格对彼此造成的困扰与影响,会预先制定编码规范.使用 Lint工具和代码风格检测工具,则可以辅助编码规范执行,格式化代码,使样式与规则保 ...
- Vim快速使用教程
Vim Vim是从vi发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富. Vi/Vim的使用 基本上分为三种模式,分别是命令模式(commad mode),输入模式(Inse ...
- Java(133-151)【String类、static、Arrays类、Math类】
1.字符串概述和特点 string在lang包里面,因此可以直接使用 字符串的内容不可变 2.字符串的构造方法和直接创建 三种构造方法 package cn.itcast.day08.demo01; ...
- Day09_45_Set集合_SortedSet02
SortedSet * TreeSet是SortedSet接口的实现类,TreeSet底层是一个TreeMap,相当于TreeMap中的key. * SortedSet集合是如何实现自动排序的呢? - ...