Spring5学习随笔-Set注入详解和构造注入

这篇具有很好参考价值的文章主要介绍了Spring5学习随笔-Set注入详解和构造注入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】

第四章、注入(Injection)

1.什么是注入

通过Spring工厂及配置文件,为所创建对象的成员变量赋值

1.1为什么需要注入

“通过编码的方式,为成员遍历进行赋值,存在耦合”

1.2如何进行注入[开发步骤]

  • 类为成员变量提供set方法
  • 配置Spring的配置文件
<bean id="person" name="p,p1" class="com.baizhi.basic.Person">
    <property name="id">
        <value>10</value>
    </property>
    <property name="name">
        <value>xiaojr</value>
    </property>
</bean>

1.3注入好处

1.解耦合

2.Spring注入的原理分析(简易版)

Spring5学习随笔-Set注入详解和构造注入

第五章、Set注入详解

针对于不同类型的成员变量,在<property>标签,需要嵌套其他标签

Spring5学习随笔-Set注入详解和构造注入

1.JDK内置类型

1.1 String+8种基本类型

<value>suns</value>

1.2 数组

<list>
    <value>suns@zp.com</value>
    <value>lincu@zp.com</value>
    <value>zhangsi@zp.com</value>
</list>

1.3 Set集合

<set>
    <value>1239188123</value>
    <value>123813121</value>
    <value>130111111</value>
    <value>130111111</value>
</set>

<set>
	<ref bean=""/> // 什么都能存
	<set></set>
</set>

1.4 List集合

<list>
    <value>zpark</value>
    <value>shangdi</value>
    <value>xierq</value>
</list>
<list>
	<ref bean=""/>
	<set></set>
</list>

1.5 Map集合

注意: map -- entry -- key有特定的标签 <key></key>
			值根据对应类型选择对应类型的标签
<map>
    <entry>
        <key><value>suns</value></key>
        <value>4231324113</value>
    </entry>
    <entry>
        <key><value>chenvn</value></key>
        <ref bean=""/>
    </entry>
</map>

1.6 Properites

Properties类型 特殊的Map key=String value=String

<props>
    <prop key="key1">value1</prop>
    <prop key="key2">value2</prop>
</props>

1.7 复杂的JDK类型(Date)

需要程序员自定义类型转换器,处理。

2.用户自定义类型

2.1 第一种方式

  • 为成员变量提供set get方法

  • 配置文件中进行注入(赋值)

    <bean id="userService" class="com.baizhi.basic.UserServiceImpl">
        <property name="userDao" >
            <bean class="com.baizhi.basic.UserDaoImpl"></bean>
        </property>
    </bean>
    

2.2第二种方式

  • 第一种赋值方式存在的问题

    1. 配置文件代码冗余
    2. 被注入的对象(UserDao)多次创建,浪费(JVM)内容资源
  • 为成员变量提供set get方法

  • 配置文件中进行配置

    <!-- 第二种 赋值方式  先创建需要的dao对象-->
        <bean id="userDAO" class="com.baizhi.basic.UserDaoImpl"/>
        <bean id="userService" class="com.baizhi.basic.UserServiceImpl">
            <property name="userDao">
                <ref bean="userDAO"/>
            </property>
        </bean>
    #Spring4.x废除了<ref local=""/>,基本等效 <ref bean=""/>
    

3.Set注入的简化写法

3.1基于属性简化

JDK类型简化
<property name="name" value="suns"/>
注意:value属性 只能简化8种基本类型 + String注入标签

用户自定义类型
<property name="userDao" ref="userDao"/>

3.2 基于p命名空间简化

<!-- p: 简化写法-->
	<bean id="person" class="xxx.Person" p:name="suns" p:id="100"/>

用户自定义类型
<bean id="userDAO" class="xxx.UserDaoImpl"/>
<bean id="userService" class="xxx.UserServiceImpl" p:userDao-ref="userDAO" />

第六章、构造注入

  1. 注入:通过Spring配置文件为成员变量赋值
  2. Set注入:Spring调用Set方法 通过配置文件为成员变量赋值
  3. 构造注入:Spring调用构造方法 通过配置文件为成员变量赋值

1.开发步骤

  • 提供有参构造方法
  • Spring配置文件
<bean id="customer" class="com.baizhi.basic.constructer.Customer">
    <constructor-arg  value="suns"/>
    <constructor-arg  value="102"/>
</bean>

2.构造方法重载

2.1 参数个数不同时

  1. 通过控制标签的数量进行区分

2.2构造参数个数相同时

  1. 通过在标签隐入 type属性 进行类型的区分

3. 注入的总结

  1. 未来的实战中 ,应用set注入还是构造注入?

    答案:set注入更多

    1. 构造注入麻烦(重载)
    2. Spring框架底层 大量应用了 set注入

Spring5学习随笔-Set注入详解和构造注入

下一章:Spring5学习随笔-IOC(反转控制)、DI(依赖注入)和创建复杂对象文章来源地址https://www.toymoban.com/news/detail-749672.html

到了这里,关于Spring5学习随笔-Set注入详解和构造注入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring5学习随笔-整合MyBatis(持久层)、连接池、Mapper文件

    学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】 JavaEE开发需要持久层进行数据库的访问操作。 JDBC MyBatis、Hibernate进行持久开发过程存在大量的代码冗余 Spring基于模板设计模式对与上述的持

    2024年02月05日
    浏览(51)
  • Spring5学习随笔-高级注解(@ComponentScan、@Configuration.....),替换XML配置文件

    学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】 Spring在3.x提供的新的注解,用于替换XML配置文件。 问题 : 配置Bean在应用的过程中替换了XML具体的什么内容? AnnotationConfigApplicationContext 配

    2024年02月05日
    浏览(46)
  • Spring5学习随笔-生命周期、自定义类型转换器、后置处理Bean

    学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】 指的是一个对象创建、存活、消亡的一个完整过程 由Spring负责对象的创建、存活、销毁,了解生命周期,有利于我们使用好Spring为我们创建

    2024年02月05日
    浏览(68)
  • Spring MVC学习随笔-控制器(Controller)开发详解:接受客户端(Client)请求参数

    学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅 💡 1. 接受客户端(client)请求参数[讲解]2. 调用业务对象3. 页面跳转 所谓简单变量:指的就是8种基本类型+String这些类型的变量。把这些类型的变量,作为控制器方法的形参,用于接受

    2024年02月05日
    浏览(54)
  • Spring Boot学习随笔- @SpringBootApplication详解、加载绝对路径配置文件、工厂创建对象(@ConfigurationProperties、@Value)

    学习视频:【编程不良人】2021年SpringBoot最新最全教程 这是一个 组合注解 ,就是由多个注解组成。下列注解红框内称为 元注解 (jdk提供) @Target :指定注解作用范围 @Retention :指定注解什么时候生效 重要注解 @SpringBootConfiguration:自动配置Spring、SpringMVC相关环境 @EnableAutoCo

    2024年02月05日
    浏览(57)
  • Spring:依赖注入的方式(setter注入、构造器注入、自动装配、集合注入)

    依赖注入的方式有setter注入、构造器注入、自动装配、集合注入 首先,Maven项目pom.xml依赖包如下: pom.xml 【注】:上述除spring依赖包之外其他三个依赖包用于测试使用。 1. setter注入 先说明一下,这里有的文件为Book2Dao(接口)、Book2DaoImpl(Book2Dao接口实现类)、Book2Service(接口)、

    2024年02月02日
    浏览(46)
  • Spring5 学习笔记

    前置知识: 掌握Java基础知识(特别是反射) 掌握Java注解 掌握XML 掌握Maven 简化企业开发的复杂性 Spring理念:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架。 SSH:Struct2 + Spring + Hibernate SSM:Spring MVC + Spring + MyBatis 官网 : http://spring.io/ 官方下载地址

    2024年02月07日
    浏览(53)
  • Spring MVC学习随笔-控制器(Controller)开发详解:控制器跳转与作用域(一)

    学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅 3.流程跳转 在web.xml里添加Servlet然后执行 可以看到通过url拼接可以获取传递的数据 四种跳转指的是:在SpringMVC中控制器与JSP或者控制器与控制器之间的跳转。 Controller - - forward — JSP Co

    2024年02月05日
    浏览(57)
  • 【Spring】浅谈spring为什么推荐使用构造器注入

    因本人实力有限,该文章主要内容(在文章基础上加了点点东西)均来自: 原文链接:https://www.cnblogs.com/joemsu/p/7688307.html 作者:joemsu ​ Spring框架对Java开发的重要性不言而喻,其核心特性就是IOC(Inversion of Control, 控制反转)和AOP,平时使用最多的就是其中的IOC,我们通过

    2024年02月13日
    浏览(49)
  • Spring5学习笔记--Maven

    本文主要内容 理解并实现分模块开发 能够使用聚合工程快速构建项目 能够使用继承简化项目配置 能够根据需求配置生成、开发、测试环境,并在各个环境间切换运行 了解Maven的私服 clean清理阶段 清理工作 pre-clean 执行一些需要在clwan之前完成的工作 clean 移除所有上一次构建

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包