gpt4 book ai didi

java - 在 spring bean 中自动装箱

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:37 25 4
gpt4 key购买 nike

我正在使用 spring 4.0.5 和 Java 1.7.0-51。我创建了一个 Integer 类型的 spring bean,并通过它的构造函数在 Applicationcontext.xml 中设置值,如下所示。

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
">

<context:component-scan base-package="com.spring.beans"></context:component-scan>
<bean id="user.min" class="java.lang.Integer"> <constructor-arg value="30" /></bean>
<bean id="machine.min" class="java.lang.Integer"> <constructor-arg value="30" /></bean>
</beans>

我将这些 bean 注入(inject)到我已经设置了一些默认值的类中。

    @Component
public class Token {

@Autowired(required = false)
@Qualifier("user.min")
private Integer userMin = 480;
@Autowired(required = false)
@Qualifier("machine.min")
private int machineMin = 480;

public Integer getUserMin() {
return userMin;
}
public void setUserMin(Integer userMin) {
this.userMin = userMin;
}
public int getMachineMin() {
return machineMin;
}
public void setMachineMin(int machineMin) {
this.machineMin = machineMin;
}

当我打印这些值时,我得到以下值。

public static void main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext("Applicationcontext.xml");
Token t = context.getBean(Token.class);

System.out.println("User:"+t.getUserMin());
System.out.println("Machine:"+t.getMachineMin());
}

Output:
User:30
Machine:480

enter image description here

userMin(Integer 类)的值是从 bean 注入(inject)的,但 machineMin(原始类型 int)的值不是注入(inject)的。

原始类型 'int' 未自动装箱为 Integer。是spring的bug还是我配置的方式不对?我正在 Windows 7 (Eclipse Juno) 上工作。有人请帮忙。

最佳答案

问题在于,带有注释配置的 Spring 按类型进行注释(先按名称,然后按名称)。它查找字段或方法(或构造函数)参数是任何类型的 bean。在您的情况下,它是 int 并且 ApplicationContext 中没有类型为 int 的 bean。由于不需要您的注入(inject)目标,因此 Spring 不会抛出异常。

我不会说这是一个错误,有解决方法,只是 @Autowired 没有。

关于java - 在 spring bean 中自动装箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25186326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com