gpt4 book ai didi

java - Spring @Required 注释没有按预期工作

转载 作者:行者123 更新时间:2023-11-29 06:20:28 26 4
gpt4 key购买 nike

我正在尝试测试 Spring Annotations 以了解它们如何使用源自 Spring 3.0 Source 的一些简单示例(在这种情况下,特别是“@Required”注释)。

首先,我提出了一个不使用任何注释的基本“Hello World”类型示例。这按预期工作(即打印“Hello Spring 3.0~!”)。

然后我向 Spring3HelloWorld 类添加了一个 DAO 对象字段。我的意图是通过使用 @Required 注释 DAO 的 setter 但随后不设置它来故意导致异常发生。然而,当我期待一个基于不遵循注释“规则/要求”的异常时,我得到了一个空指针异常(因为 this.dao 是空的)。

我原以为我需要在从 Spring3HelloWorld 调用任何方法之前设置 DAO 对象,但显然情况并非如此。我假设我误解了 @Required 的工作原理。

所以基本上,我如何才能得到以下信息,按照“嘿,你不能那样做,你忘了设置 DAO blah blah blah”之类的错误。

Spring3HelloWorldTest.java:

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

public class Spring3HelloWorldTest {

public static void main(String[] args) {

XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource ("SpringHelloWorld.xml"));

Spring3HelloWorld myBean = (Spring3HelloWorld) beanFactory.getBean("spring3HelloWorldBean");
myBean.sayHello();

}
}

Spring3HelloWorld.java:

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

public class Spring3HelloWorld {

private DAO dao;

@Required
public void setDAO( DAO dao ){
this.dao = dao;
}

public void sayHello(){
System.out.println( "Hello Spring 3.0~!" );

//public field just for testing
this.dao.word = "BANANA!!!";
}
}

SpringHelloWorld.xml:

<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"
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">

<context:annotation-config/>

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

<bean id="dao" class="src.DAO" ></bean>
<bean id="spring3HelloWorldBean" class="src.Spring3HelloWorld" ></bean>

</beans>

最佳答案

我的第一个猜测是您不会获得任何 Spring 和注释的高级行为,因为您使用的是 XmlBeanFactory 而不是推荐的 ApplicationContext

-- 编辑--

是的 - 请参阅 Stack Overflow question/answer .

关于java - Spring @Required 注释没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3284845/

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