无法通过XML配置

时间:2018-04-08 21:28:30

标签: java spring spring-mvc

我有一个简单的应用程序,它包含xml配置,1个春季会话bean,控制器。使用注释一切正常,但看起来像spring无法看到xml配置,因为它找不到Person bean?!

问题是我如何才能通过xml自动装豆?

异常消息:

No qualifying bean of type 'com.spring_beans_scope.beans.Person' available: expected at least 1 bean which qualifies as autowire candidate
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    <bean id="id1" class="com.spring_beans_scope.beans.WelcomeBean" scope="prototype">
        <!--<property name="message" value="Welcome to spring" />-->
    </bean>

    <bean id="person" class="com.spring_beans_scope.beans.Person" scope="session">
        <property name="name" value="Raj" />
        <aop:scoped-proxy proxy-target-class="true" />
    </bean>

    <context:component-scan base-package="com.spring_beans_scope" />
    <context:annotation-config />
</beans>

//@Service("person")
//@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class Person {

    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

控制器的负责人

@Controller
public class HelloController {

    @Autowired
    private Person person;

1 个答案:

答案 0 :(得分:1)

此答案基于您的评论,您希望在不使用注释的情况下了解如何执行此操作。

您可以在没有注释的情况下执行此操作。您需要在bean声明中使用autowire属性。

  autowire="byName"

这可能有点棘手,因为@Controller注释未从xml配置,但this堆栈溢出帖子有助于解释如何配置控制器来执行此操作。

这个tutorial有助于解释您可以直接从上下文文件中自动装配的各种方法。