Spring Bean常用依赖注入方式详解

作者:杯莫停、 时间:2022-06-05 21:43:33 

一般而言,Spring的依赖注入有三种:构造器注入、setter注入以及接口注入。本文主要讲构造器注入与setter注入。

1、构造器注入

为了让Spring完成构造器注入,我们需要去描述具体的类、构造方法并设置构造方法的对应参数。

代码如下:


public class Role {

private Long id;

private String roleName;

private String note;

public Long getId() {
   return id;
 }

public void setId(Long id) {
   this.id = id;
 }

public String getRoleName() {
   return roleName;
 }

public void setRoleName(String roleName) {
   this.roleName = roleName;
 }

public String getNote() {
   return note;
 }

public void setNote(String note) {
   this.note = note;
 }

public Role(String roleName, String note) {
   this.roleName = roleName;
   this.note = note;
 }

public Role() {

}

public void run() {
   System.out.println("roleName:" + roleName + ";" + "note:" + note);
 }
}

这个时候是没有办法利用无参的构造方法去创建对象的,为了使Spring能正确创建这个对象,需要在xml文件中加入如下bean:


<bean id="role1" class="com.ssm.chapter.pojo.Role">
   <constructor-arg index="0" value="总经理" />
   <constructor-arg index="1" value="公司管理者" />
 </bean>

其中,constructor-arg元素用于定义类构造方法的参数,index用于定义参数的位置,而value是设置值,通过这样定义spring便知道使用Role(String, String)这样的构造方法去创建对象了。

2、使用setter注入

setter注入是Spring最主流的注入方式,它消除了使用构造器注入多个参数的可能性,可以把构造参数声明为无参的,然后使用setter注入为其设置对应的值。需要注意的是,如果类中没有构造函数,JVM会默认创建一个无参构造函数。xml代码清单如下:


<bean id="role2" class="com.ssm.chapter.pojo.Role" >
   <property name="roleName" value="高级工程师" />
   <property name="note" value="重要人员" />
 </bean>

接着编写测试类即可:

ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-cfg.xml");
Role role = (Role) ctx.getBean("role2");
role.run();

来源:https://www.cnblogs.com/pusan/p/12174123.html

标签:Spring,Bean,依赖,注入
0
投稿

猜你喜欢

  • java GUI实现学生图书管理简单实例

    2023-11-11 05:00:05
  • Spring Boot和Kotlin的无缝整合与完美交融

    2022-07-08 04:54:09
  • JavaWeb开发使用Cookie创建-获取-持久化、自动登录、购物记录、作用路径

    2022-01-11 10:37:28
  • SpringBoot路径映射实现过程图解

    2023-11-13 04:01:11
  • 关于java关键字this和super的区别和理解

    2022-08-01 14:33:09
  • 三道java新手入门面试题,通往自由的道路--多线程

    2023-05-24 23:12:51
  • SpringBoot整合RocketMQ的详细过程

    2023-07-10 05:07:00
  • Java常见数据结构面试题(带答案)

    2023-11-24 19:44:05
  • java ThreadGroup的作用及方法详解

    2022-02-03 16:49:01
  • 图解Java线程的生命周期

    2022-04-12 15:16:10
  • Java数据结构之栈与队列实例详解

    2021-05-29 03:25:13
  • mybatis-plus查询源码详解

    2023-02-02 11:58:02
  • Java实现FTP上传与下载功能

    2021-09-22 18:28:51
  • Java接口的简单定义与实现方法示例

    2022-11-22 05:04:43
  • Java Spring处理循环依赖详解

    2022-07-14 05:06:16
  • 线程池中execute与submit的区别说明

    2023-03-18 23:09:04
  • Opencv光流运动物体追踪详解

    2023-06-21 11:55:31
  • 详解Java并发包中线程池ThreadPoolExecutor

    2022-03-23 19:57:20
  • Spring Boot 静态资源处理方式

    2022-09-14 11:14:39
  • 详细聊聊SpringBoot中动态切换数据源的方法

    2023-11-24 04:07:49
  • asp之家 软件编程 m.aspxhome.com