@Autowired注释在spring独立应用程序中不起作用

时间:2016-03-20 21:38:37

标签: spring

我是春天的新人,我试图在我的独立应用程序中使用@Autowired注释,但我无法做到。 这是我的主要课程

MainDemo.java

MockRescueDamselQuest

SpringIntro.java

public class MainDemo {
public static void main(String[] args) {
    BeanFactory sf= new XmlBeanFactory(new FileSystemResource("beans.xml")); 

    SpringIntro a= (SpringIntro)sf.getBean("act");
    System.out.println(a.getResults());
}

Admininterface.java

@Service("act") 
public class SpringIntro {

@Autowired
AdminInterface adminDAO;

public String getResults(){
    System.out.println("in spring intro");
    for( AdminBean ab:adminDAO.getAdminData() ){
        System.out.println(ab.getAdministratiorName());
    }
    return "sree";
}
}

AdminDao.java

  public interface AdminInterface {
    List<AdminBean> getAdminData();
    }

的beans.xml

public class AdminDao implements AdminInterface{
    @Autowired
    public JdbcTemplate jdbcTemplate;


    @Override
    public List<AdminBean> getAdminData() {
        // TODO Auto-generated method stub
        System.out.println("admin dao autowired is working "+jdbcTemplate);
        String sql = "select * from administrator";
        List<AdminBean> resultList = jdbcTemplate.query(sql,
                new AdminMapping());
        return resultList;
    }

}

当我通过main方法运行app时,我得到空指针,如果在beans.xml文件中为adminDao添加bean我得到的结果,但是如果我使用@Autowired我有问题。谁能帮我?提前谢谢。

1 个答案:

答案 0 :(得分:1)

您使用XmlBeanFactory,但XmlBeanFactory不实现BeanPostProcessor并且不会后处理注释:那么它不使用AutowiredAnnotationBeanPostProcessor。这可能会导致空指针异常。

我建议你改用ApplicationContext。