spring中构造函数注入

spring中构造函数注入,简单来说,就是通过beans.xml中,设置相应的值,并且通过bean类中的构造函数进行注入这些值。

文件结构


Goods类

package com.test.innerbean;

public class Goods {
	private String goodsName;
	private int price;
	
	public Goods(String name,int price)
	{
		goodsName=name;
		this.price=price;
	}
	
	public void say()
	{
		System.out.println("goodsname:"+goodsName+" price:"+price);
	}

}

beans.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"  
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://www.springframework.org/schema/beans  
            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="goods" class="com.test.innerbean.Goods">
   		<constructor-arg  value="茶杯"></constructor-arg>
   		<constructor-arg value="12"></constructor-arg>
    </bean>
    
  
</beans>


测试类

package com.test.innerbean;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BeanFactory factory=new XmlBeanFactory(new ClassPathResource("com/test/innerbean/beans.xml"));
		Goods goods=(Goods)factory.getBean("goods");
		goods.say();
	}

}

输出结果



我们可以看到,能够产生Goods类的一个实例,并且对这个实例进行输出测试,发现也的确获得了相应的值。

在Java Spring框架构造函数注入是依赖注入的一种方式,它通过构造函数为对象提供依赖。为了使用构造函数注入,你需要定义一个带有依赖项作为参数的构造函数,并使用@Autowired注解或构造器注入的Java配置类。以下是一个使用构造函数注入的简单例子: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class MyService { private final MyDependency myDependency; // 使用@Autowired注解进行构造函数注入 @Autowired public MyService(MyDependency myDependency) { this.myDependency = myDependency; } // ... 其他方法 ... } ``` 在这个例子,`MyService` 类有一个名为 `myDependency` 的依赖项,它通过构造函数注入。`@Autowired` 注解告诉Spring框架,当创建 `MyService` 的实例时,需要传入一个 `MyDependency` 类型的依赖项。Spring会自动寻找合适的 `MyDependency` 类型的bean,或者如果这个类型只有一个定义的bean,则自动注入。 另外,如果是在Java配置类,也可以使用`@Autowired`注解直接在构造函数上,但更多时候使用`@Bean`注解方法,这样更灵活,可以进行复杂的bean配置。 ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Bean public MyService myService() { return new MyService(myDependency()); } @Bean public MyDependency myDependency() { return new MyDependency(); } } ``` 在上面的配置类`AppConfig`,`myService()`方法定义了一个bean,其构造函数注入了由`myDependency()`方法创建的`MyDependency`实例。这种方式下,使用构造函数注入时并不需要在方法上使用`@Autowired`注解,因为通过方法返回类型和方法名,Spring可以解析依赖关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值