Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基本spring问题:使用@Autowired_Spring - Fatal编程技术网

基本spring问题:使用@Autowired

基本spring问题:使用@Autowired,spring,Spring,我有以下两个对象:User和DomainUser User.java: package com.domain; import java.io.Serializable; @SuppressWarnings("serial") public class User implements Serializable { private long id = 0; private String userName; private String password; pu

我有以下两个对象:User和DomainUser

User.java:

package com.domain;

import java.io.Serializable;

@SuppressWarnings("serial")
public class User implements Serializable {

    private long id = 0;
    private String userName;
    private String password;

    public User() {

    }

    public User(long id) {
        this.id = id;
    }

    public String toString() {

        StringBuffer sb = new StringBuffer(256);

        sb.append("[id : ").append(id).append(", ");
        sb.append("userName : ").append(userName).append(", ");
        sb.append("password : ").append(password).append("]");

        return sb.toString();
    }

    public long getId() {
        return id;
    }

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

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}
DomainUser.java

package com.domain;

import org.springframework.beans.factory.annotation.Autowired;


public class DomainUser {


    @Autowired
    private User user;
    private String domainName;

    public String toString() {
        StringBuffer sb = new StringBuffer(255);

        sb.append(user.toString()).append(", domainName : ").append(domainName);

        return sb.toString();
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public String getDomainName() {
        return domainName;
    }

    public void setDomainName(String domainName) {
        this.domainName = domainName;
    }



}
我正在尝试使用@Autowired注释将用户对象自动关联到DomainUser。但是,当我按如下方式运行测试时,用户对象没有填充

applicationContext.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-3.0.xsd">

    <bean id="user" class="com.domain.User">
        <constructor-arg  value="#{1234}"/> 
        <property name="userName" value="somename" />
        <property name="password" value="sompassword" />
    </bean>

    <bean id="domainUser" class="com.domain.DomainUser">
        <property name="domainName" value="mysite" />
    </bean>

</beans>
如果我在applicationContext.xml的autowiring属性中使用“byType”自动连线,它可以正常工作:

    <bean id="domainUser" class="com.domain.DomainUser" autowire="byType">
        <property name="domainName" value="mysite" />
    </bean>


有人能帮我理解为什么@Autowired annotation不能产生相同的结果吗?

您需要一个Autowired注释BeanPostProcessor来处理
@Autowired
属性的注入。您可以放置
(您需要在xml中定义上下文名称空间),或者只将后处理器定义为xml中的bean:

<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>


有关详细信息,请参见示例。

您需要一个AutowiredNotationBeanPostProcessor来处理
@Autowired
属性的注入。您可以放置
(您需要在xml中定义上下文名称空间),或者只将后处理器定义为xml中的bean:

<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

有关详细信息,请参见示例