首页 Java java教程 spring框架学习(二)依赖注入

spring框架学习(二)依赖注入

Dec 29, 2016 pm 01:10 PM

spring框架为我们提供了三种注入方式,分别是set注入,构造方法注入,接口注入。接口注入不作要求,下面介绍前两种方式。

1,set注入
采用属性的set方法进行初始化,就成为set注入。
1)给普通字符类型赋值。

public class User{
   privateString username;
 
   publicString getUsername() {
       returnusername;
   }
   publicvoid setUsername(String username) {
      this.username= username;
   }
}
登录后复制

我们只需要提供属性的set方法,然后去属性文件中去配置好让框架能够找到applicationContext.xml文件的beans标签。标签beans中添加bean标签,
指定id,class值,id值不做要求,class值为对象所在的完整路径。bean标签再添加property
标签,要求,name值与User类中对应的属性名称一致。value值就是我们要给User类中的username属性赋的值。

<bean id="userAction"class="com.lsz.spring.action.User" >
	<property name="username" value="admin"></property>
</bean>
登录后复制

2)给对象赋值
同样提供对象的set方法

public class User{
     private UserService userservice;
     public UserServicegetUserservice() {
          returnuser;
     }
     public void setUserservice(UserService userservice){
         this.userservice= userservice;
     }
}
登录后复制

配置文件中要增加UserService的bean标签声明及User对象对UserService引用。

<!--对象的声明-->
<bean id="userService" class="com.lsz.spring.service.UserService"></bean>
 
<bean id="userAction"class="com.lsz.spring.action.User" >
   <property name="userservice" ref="userService"></property>
</bean>
登录后复制

这样配置,框架就会将UserService对象注入到User类中。

3)给list集合赋值
同样提供set方法

public class User{
    privateList<String> username;
    publicList<String> getUsername() {
        returnusername;
    }
    publicvoid setUsername(List<String> username) {
        this.username= username;
    }
}
登录后复制
<bean id="userAction"class="com.lsz.spring.action.User" >
     <propertyname="username">
           <list>
               <value>zhang,san</value>
               <value>lisi</value>
               <value>wangwu</value>                                
               </list>
    </property>
</bean>
登录后复制

4)给属性文件中的字段赋值

public class User{
    privateProperties props ;
    publicProperties getProps() {
        returnprops;
    }
    publicvoid setProps(Properties props) {
        this.props= props;
    }
}
登录后复制
<bean>
    <propertyname="props">
        <props>
           <propkey="url">jdbc:oracle:thin:@localhost:orl</prop>
           <propkey="driverName">oracle.jdbc.driver.OracleDriver</prop>
           <propkey="username">scott</prop>
           <propkey="password">tiger</prop>
        </props>
    </property>
</bean>
登录后复制

标签中的key值是.properties属性文件中的名称

注意:
无论给什么赋值,配置文件中标签的name属性值一定是和对象中名称一致。


2构造方法注入
1)构造方法一个参数

public class User{
    privateString usercode;
    publicUser(String usercode) {
        this.usercode=usercode;
    }
}
登录后复制
<bean id="userAction"class="com.lsz.spring.action.User">                        
    <constructor-argvalue="admin"></constructor-arg>                        
</bean>
登录后复制

2)构造函数有两个参数时
当参数为非字符串类型时,在配置文件中需要制定类型,如果不指定类型一律按照字符串类型赋值。
当参数类型不一致时,框架是按照字符串的类型进行查找的,因此需要在配置文件中制定是参数的位置

<constructor-argvalue="admin"index="0"></constructor-arg>                
<constructor-argvalue="23" type="int"index="1"></constructor-arg>
登录后复制

这样制定,就是构造函数中,第一个参数为string类型,第二个参数为int类型


 以上就是spring框架学习(二)依赖注入的内容,更多相关内容请关注PHP中文网(www.php.cn)!


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

利用Spring Boot以及Spring AI构建生成式人工智能应用 利用Spring Boot以及Spring AI构建生成式人工智能应用 Apr 28, 2024 am 11:46 AM

Spring+AI作为行业领导者,通过其强大、灵活的API和先进的功能,为各种行业提供了领先性的解决方案。在本专题中,我们将深入探讨Spring+AI在各领域的应用示例,每个案例都将展示Spring+AI如何满足特定需求,实现目标,并将这些LESSONSLEARNED扩展到更广泛的应用。希望这个专题能对你有所启发,更深入地理解和利用Spring+AI的无限可能。Spring框架在软件开发领域已经有超过20年的历史,自SpringBoot1.0版本发布以来已有10年。现在,无人会质疑,Spring

修改spring gateway中的RequestBody 修改spring gateway中的RequestBody Feb 09, 2024 pm 07:15 PM

我想在将requestbody路由到给定的uri之前修改它。基于我正在使用的文档org.springframework.cloud.gateway.filter.factory.rewrite.modifyrequestbodygatewayfilterfactory修改正文。启动我的服务器时,服务器无法启动并出现以下错误原因:元素[spring.cloud.gateway.routes[0].filters[0].modifyrequestbody.class]未绑定。\n\n操作:\

手把手带你了解Angular中的依赖注入 手把手带你了解Angular中的依赖注入 Dec 02, 2022 pm 09:14 PM

本篇文章带大家了解一下依赖注入,介绍一下依赖注入解决的问题和它原生的写法是什么,并聊聊Angular的依赖注入框架,希望对大家有所帮助!

在Phalcon框架中使用依赖注入(Dependency Injection)的方法 在Phalcon框架中使用依赖注入(Dependency Injection)的方法 Jul 30, 2023 pm 09:03 PM

在Phalcon框架中使用依赖注入(DependencyInjection)的方法引言:在现代的软件开发中,依赖注入(DependencyInjection)是一种常见的设计模式,旨在提高代码的可维护性和可测试性。而Phalcon框架作为一个快速、低耗的PHP框架,也支持使用依赖注入来管理和组织应用程序的依赖关系。本文将向您介绍如何在Phalcon框架中

JAX-RS 与 Spring MVC:一场 RESTful 巨头的较量 JAX-RS 与 Spring MVC:一场 RESTful 巨头的较量 Feb 29, 2024 pm 05:16 PM

简介RESTfulapi已经成为现代WEB应用程序中不可或缺的一部分。它们提供了一种标准化的方法来创建和使用Web服务,从而提高可移植性、可扩展性和易用性。在Java生态系统中,JAX-RS和springmvc是构建RESTfulAPI的两个最受欢迎的框架。本文将深入探讨这两种框架,比较它们的特性、优势和劣势,帮助您做出明智的决定。JAX-RS:JAX-RSAPIJAX-RS(JavaAPIforRESTfulWebServices)是由JavaEE开发的标准JAX-RSAPI,用于开发REST

深入了解Spring框架的架构与工作原理 深入了解Spring框架的架构与工作原理 Jan 24, 2024 am 09:41 AM

深入剖析Spring框架的架构与工作原理引言:Spring是Java生态系统中最受欢迎的开源框架之一,它不仅提供了一套强大的容器管理和依赖注入功能,还提供了许多其他功能,如事务管理、AOP、数据访问等。本文将深入剖析Spring框架的架构与工作原理,并通过具体的代码示例来解释相关概念。一、Spring框架的核心概念1.1IoC(控制反转)Spring的核心

优化程序日志记录:log4j日志级别设置技巧分享 优化程序日志记录:log4j日志级别设置技巧分享 Feb 20, 2024 pm 02:27 PM

优化程序日志记录:log4j日志级别设置技巧分享摘要:程序的日志记录对于问题排查、性能调优和系统监控都起着关键作用。本文将分享log4j日志级别设置的技巧,包括如何设置不同级别的日志以及如何通过代码示例来说明设置过程。导语:在软件开发中,日志记录是一项非常重要的工作。通过记录程序在运行过程中的关键信息,可以帮助开发者找出问题发生的原因,进行性能优化和系统监控

Golang函数参数传递中的依赖注入模式 Golang函数参数传递中的依赖注入模式 Apr 14, 2024 am 10:15 AM

在Go中,依赖注入(DI)模式通过函数参数传递实现,类型包括值传递和指针传递。在DI模式中,依赖项通常以指针传递,以提高解耦性、减少锁争用和支持可测试性。通过使用指针,函数与具体实现解耦,因为它只依赖于接口类型。指针传递还可以减少传递大对象的开销,从而减少锁争用。此外,DI模式可以轻松地为使用DI模式的函数编写单元测试,因为可以轻松地模拟依赖项。

See all articles