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注入小结的更多相关文章

  1. sqlmap注入小结

    sqlmap注入时: 1.判断可注入的参数 2.判断可以用那种SQL注入技术来注入 3.识别出哪种数据库 4.根据用户选择,读取哪些数据 sqlmap支持五种不同的注入模式: 1.基于布尔的盲注,即可 ...

  2. SQL注入小结

    分类学习有利于条理化知识,大致的SQL注入分为三种: 1.BealeanBase 2.TimeBase 3.ErrorBase 1.从最简单的说起,基于布尔类型是最常见的SQL注入方式 select ...

  3. spring 依赖注入 小结

    通过 @Autoiwired注解  和接口  注入实现这个接口的实现类 的  类  也必须是 可注入的(必须归spring容器所管理)

  4. asp.net mvc4 简单使用Autofac依赖注入小结

    1,首先使用 NuGet下载适当的Autofac版本 文件一,Autofac.3.5.2 文件二,Autofac.Mvc4.3.1.0 1,接口类 public interface IReposito ...

  5. SQL手工注入小结

    第一步先把IE菜单=>工具=>Internet选项=>高级=>显示友好 HTTP 错误信息前面的勾去掉.否则,不论服务器返回什么错误,IE都只显示为HTTP 500服务器错误, ...

  6. [极客大挑战 2019]HardSQL updatexml报错注入小结

    报错注入链接: https://www.cnblogs.com/richardlee97/p/10617115.html报错原因: 其原因主要是因为虚拟表的主键重复.按照MySQL的官方说法,grou ...

  7. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(28)-系统小结

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(28)-系统小结 我们从第一节搭建框架开始直到二十七节,权限管理已经告一段落,相信很多有跟上来的园友,已经 ...

  8. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(14)-系统小结

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(14)-系统小结 不知不觉已经过了13讲,(本来还要讲多一讲是,数据验证之自定义验证,基于园友还是对权限这 ...

  9. 对MYSQL注入相关内容及部分Trick的归类小结

    前言 最近在给学校的社团成员进行web安全方面的培训,由于在mysql注入这一块知识点挺杂的,入门容易,精通较难,网上相对比较全的资料也比较少,大多都是一个比较散的知识点,所以我打算将我在学习过程中遇 ...

随机推荐

  1. 推荐一份Web 工程师的前端书单

    014年一月以来,自己接触web前端开发已经两年多了,记录一下自己前端学习路上看过的,以及道听途说的一些书,基本上按照由浅入深来介绍. JavaScript 入门 <JavaScript权威指南 ...

  2. MyBatis笔记(七)

    1. 简介 什么是缓存? 存在内存中的临时数据 将用户经常查询的数据存放在缓存(内存)中,用户取查询就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问 ...

  3. Java JVM 启动参数

    JVM 启动参数 java -Xmx4096m // 设置JVM最大可用内存为4096m. -Xms4096m // 设置JVM促使内存为4096m.此值可以设置与-Xmx相同,以避免每次垃圾回收完成 ...

  4. Salesforce学习之路(四)利用Jenkins和Git实现Salesforce的CI/CD功能

    上文提到,基于CRM的二次开发是必不可少的,但是在实际项目中CI/CD是不可忽略的一个重要部分,与传统的Java,Python项目不同,如果对Salesforce进行持续集成和持续部署呢? 结合找到的 ...

  5. xlrd、xlwt 库

    1. 安装与介绍 2. xlrd 3. xlwt 1. 安装与介绍 xlrd 模块实现对excel文件内容读取,xlwt 模块实现对excel文件的写入. 模块安装: pip install xlrd ...

  6. Spring-Cloud-Alibaba之Sentinel

    微服务中为了防止某个服务出现问题,导致影响整个服务集群无法提供服务的情况,我们在系统访问量和业务量高起来了后非常有必要对服务进行熔断限流处理. 其中熔断即服务发生异常时能够更好的处理:限流是限制每个服 ...

  7. 06- 移动端APP兼容性测试以及APP兼容性测试手机选择与云测试技术

    在开始测试APP之前,应该考虑什么问题?或者如何选择设备?多少部手机测试兼容性最佳? 兼容性测试手机数量:主测手机 1 ,2(根据人员),辅助测试手机:用于兼容性测试.(50-60台最佳,至少5-20 ...

  8. linux删除文件空间不释放问题解决

    目录 场景描述 原因 解决方法 在线清空文件 场景描述 某天,收到Prometheus报警,生产中某台机器出现磁盘空间不足报警,该台服务器是mysql其中一台从库,远程登录到该服务后,排查磁盘空间的原 ...

  9. Python 使用oslo.vmware管理ESXI虚拟机

    oslo.vmware是OpenStack通用框架中的一部分,主要用于实现对虚拟机的管理任务,借助oslo.vmware模块我们可以管理Vmware ESXI集群环境. 读取所有节点主机 from o ...

  10. 从苏宁电器到卡巴斯基第27篇:难忘的三年硕士时光 V

    一发不可收拾 安全领域的公司都喜欢在看雪或者是吾爱破解这样的网站上发布招聘贴,因为这样的话很容易就能够招到适合的人才,也算是精准营销了.而像我这种想进入安全圈的,也会在这里发布自己的求职简历,以期望能 ...