当前位置: 首页 > 知识库问答 >
问题:

@自动安装注释在Spring给我NullPointerException

陈增
2023-03-14

我试图通过一个简单的程序在Spring中使用@Autowired注释进行依赖注入,但是我给出了以下错误

Exception in thread "main" java.lang.NullPointerException
    at Customer.d(Customer.java:8)
    at Main.main(Main.java:12)

通过xml配置,它给了我正确的结果。

我的 xml 文件

<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 class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> 
  <bean id="person" class="Person">
    <property name="name" value="khan"/>
  </bean>
  <bean id="cust" class="Customer"></bean>
</beans>

客户类

public class Customer {
@Autowired  
private Person p;
 public void display(){
     System.out.println(p.getName());
 }
}

人员类

public class Person {

    public String getName() {
        return name;
    }

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

    private String name;

}

主类

public class Main {
    public static void   main(String[] a) {

        Resource r=new ClassPathResource("SpringXml.xml");
        BeanFactory factory=new XmlBeanFactory(r);
        Customer c=(Customer)factory.getBean("cust");
        c.display();
    }

}

共有2个答案

皇甫展
2023-03-14

试试这个:

<bean id="person" class="com.yourpackage.Person">
  <property name="name" value="khan"/>
</bean>
<bean id="cust" class="com.yourpackage.Customer">
   <property name="p" ref="person"/>
</bean>

不要忘记添加fullpath类包

张逸清
2023-03-14

像这样试试

public static void main(String[] args) throws Exception {
    ApplicationContext context= new ClassPathXmlApplicationContext("SpringXml.xml");
    Customer c = (Customer) context.getBean("cust");
    c.display();
}
 类似资料:
  • Spring@自动配电 我对Spring@Autowired注释有疑问。请帮助。。。 在Spring mvc中,当我按此顺序尝试@Autow的时候 控制器- 即在控制器I自动连线服务类对象中,在服务类自动连线Dao对象中。 这个注射链工作得很好。 类似地,在strutrs2 Spring中,我以这种方式应用了@Autowired注释 操作--- 该注射链也工作正常。 如果我从这个链之外调用一个fu

  • 我不明白的是为什么人们说自我调用会破坏交易?只要调用方方法是事务性的,难道一切都不应该像预期的那样工作吗?我有什么遗漏吗?

  • 我正在使用SpringFramework和Java。我使用SpringXML文件来定义体系结构的流程,以及Java部分将使用的bean。 我的xml文件中有两个相同类的bean,但它们的构造函数参数不同: 是否有一种方法可以将其中一个bean设置为默认值,以便从Java@Autow的它?并且,当我想使用非默认bean时,应用注释。

  • 问题内容: 我正在看工作区中的一些旧示例。由于没有 @Autowired, 我看不到自动 装配的方式 。Spring Boot + Facebook默认配置。 它工作完美,但是这些bean如何在没有@Autowired的情况下自动进行自动连线? 它们是作为字段或在构造函数中自动接线的吗? 问题答案: 借助Spring Boot 1.4+,构造函数将自动进行自动接线 https://docs.spr

  • 问题内容: 我正在开发一个Spring Boot应用程序,并且在这里遇到了一个问题。我试图注入一个@Repository注释的接口,它似乎根本不起作用。我收到这个错误 这是我的代码: 主要应用类别: Entity class: Repository interface: Controller: build.gradle application.properties: 我什至将我的代码与Access

  • 问题内容: 我的应用程序使用Spring自动装配来配置Bean。我刚刚尝试添加@Transactional,预期的代理似乎没有被调用。我希望PersonalController用事务代理包装的UpdatePublicMapService调用UpdatePublicMapService。 我看到的是PersonalController实例化了两次。第一次获得代理,但是第二次获得未代理的目标。我究竟做