Spring注入小结 (在Application.xml中)


Spring学习笔记 周芋杉2021/5/14


1.基本注入类型注入

注入前的准备

  1. <bean id="#配置文件的唯一标识" class="#Spring工厂将要创建的类的全限名命名">
  2. <property name="#填写所赋予的变量">
  3. #注入值
  4. </property>
  5. </bean>

JDK类型注入

1.8种基本类型加Stirng

  1. #注入值
  2. <value>#值</value>

2.数组

  1. <list>
  2. <value>#值1</value>
  3. <value>#值2</value>
  4. <value>#值3</value>
  5. </list>

3.set集合

  • set集合是无序的,取出值不会像数组一样有序
  • set集合有泛型约束如set
  • 如果没有泛型约束 set可以装任何类型的值
  1. #有泛型约束 8种基本类型加Stirng
  2. <set>
  3. <value>#值1</value>
  4. <value>#值2</value>
  5. <value>#值3</value>
  6. </set>
  7. #无约束
  8. <set>
  9. <ref bean #用户自定义类型
  10. <set #还可存放set类型
  11. </set>

4.list集合

  1. <list>
  2. <value>#值1</value>
  3. <value>#值2</value>
  4. </list>
  5. #和set类似
  6. <list>
  7. <ref bean #用户自定义类型
  8. <set #还可存放set类型
  9. </list>

5.Map集合

  1. <map>
  2. #entry代表一个键值对
  3. <entry>
  4. <key>
  5. <value>#键值</value>#如果Map是字符串泛型则内嵌<value></value>
  6. </key>
  7. <value>#值</value>
  8. </entry>
  9. </map>

6.Properties

​ Properties是一种特殊的Map 键值都是String

  1. <props>
  2. <prop key="#键1">#直接写值1</prop>
  3. <prop key="#键2">#直接写值2</prop>
  4. </props>

2.自定义类型注入

方式一

  1. 步骤
  2. 1. 在实现类中实现自定义的类型
  3. 2. 在实现类中提供setget方法
  4. 3. 在配置文件中注入

例如:

实现类MySpringTest:

实现自定义类型UserDAO

  1. //实现自定义类型
  2. private UserDAO testDao;
  3. //提供set和get方法
  4. public UserDAO getTestDao() {
  5. return testDao;
  6. }
  7. public void setTestDao(UserDAO testDao) {
  8. this.testDao = testDao;
  9. }

配置文件中注入

  1. <bean id="testDao" class="org.MySpringTest">
  2. <property name="testDao">
  3. <bean class="org.UserDAOImpl"/>
  4. </property>
  5. </bean>

注:在property里的bean class是实现了testDao这个自定义类型,但是要实现这个自定义类的的实现。此处为UserDAO接口的实现类UserDAOImpl

存在的问题

  1. 1.配置文件的冗余,如果需要多次使用UserDAO则需要多次使用注入
  2. 2.多次创建对象会使得JVM内存紧张

方式二

先实现出自定义类的实现

  1. <bean id="DAO"class="org.UserDAOImpl"/>

在实现类的配置文件里面引用自定义类

  1. <bean id="testDao" class="org.MySpringTest">
  2. <property name="testDao">
  3. <ref bean="DAO"/>
  4. </property>
  5. </bean>

实现了只创建一次多次使用节约内存

3.简化写法注入

8种基本类型加Stirng

  1. <bean id="#配置文件的唯一标识" class="#Spring工厂将要创建的类的全限名命名">
  2. <property name="#填写所赋予的变量" value="#注入值">
  3. </bean>

用户自定义类型

  1. <bean id="#配置文件的唯一标识" class="#Spring工厂将要创建的类的全限名命名">
  2. <property name="#填写所赋予的变量">
  3. <ref bean="#引用的id"/>
  4. </property>
  5. </bean>

P命名空间

在使用P命名空间以前要在标头beans加入

  1. xmlns:p="http://www.springframework.org/schema/p"

8种基本类型加Stirng

  1. <bean id="#配置文件的唯一标识"
  2. class="#Spring工厂将要创建的类的全限名命名"
  3. p:#变量名="#值"/>

自定义

  1. <bean id="#配置文件的唯一标识"
  2. class="#Spring工厂将要创建的类的全限名命名"
  3. p:#变量名-ref="#值"/>

4.构造注入

1.普通构造方法

开发步骤:

  1. 1.提供有参数构造方法(有参数!)
  2. 2.提供配置文件注入

例如:参数构造方法

  1. public class Customer implements Serializable {
  2. private String name;
  3. private int age;
  4. public Customer(String name,int age){
  5. this.age=age;
  6. this.name=name;
  7. }

参数顺序从左到右

在配置文件注入

  1. <bean id="customer" class="org.constructer.Customer">
  2. <constructor-arg value="SY"/>
  3. <constructor-arg value="21"/>
  4. </bean>

结果为name=SY age=21

2.重载的构造方法

1.不同的参数数量

Spring通过constructor-arg的数量辨别

2.相同的参数数量,Spring通过参数类型判断,引入type

  1. <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. Java 读取Word文本/段落格式属性

    本文介绍通过Java后端程序代码来读取Word文本和段落格式的方法. 本次测试环境如下: Word版本:2013 编译环境:IntelliJ IDEA2018 Work库:free spire.doc ...

  2. 面向前端开发人员的VSCode自动化插件

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文参考:https://blog.bitsrc.io/vscode-automations-for-fro ...

  3. 热更新语言--lua学习笔记

    一.lua安装和编程环境搭建 lua语言可以在官网:http://luadist.org/下载安装包安装,编程IDE之前学习使用的是SciTE(https://www.cnblogs.com/movi ...

  4. SpringBoot项目打包部署

    部署方式 SpringBoot项目可以通过jar包或者war包部署在服务器上,因为jar包更适合前后端分离的项目,所以这里我们使用jar包的方式. 添加maven支持 <!-- 这个插件,可以将 ...

  5. python导入数据的几种方法

    以下是在我学习过程中常用的两种导入数据的方式 方法一: c = open('ML2017Data/testTarget.csv',"r") file = csv.reader(c) ...

  6. Spring Boot入门学习

    1. Spring Boot概述 1.1.什么是Spring Boot SpringBoot是一个可使用Java构建微服务的微框架.是Spring框架及其社区对"约定优先于配置"理 ...

  7. 网络编程Netty入门:EventLoopGroup分析

    目录 Netty线程模型 代码示例 NioEventLoopGroup初始化过程 NioEventLoopGroup启动过程 channel的初始化过程 Netty线程模型 Netty实现了React ...

  8. Day11_55_在Map集合中使用泛型

    在Map集合中使用泛型 ``` import java.util.HashMap; import java.util.Iterator; import java.util.Map; import ja ...

  9. Pytorch系列:(三)模型构建

    nn.Module 函数详解 nn.Module是所有网络模型结构的基类,无论是pytorch自带的模型,还是要自定义模型,都需要继承这个类.这个模块包含了很多子模块,如下所示,_parameters ...

  10. linux下export命令添加删除环境变量

    Linux export命令参数   功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量. ...