我是春天的新人,我试图在我的独立应用程序中使用@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我有问题。谁能帮我?提前谢谢。
答案 0 :(得分:1)
您使用XmlBeanFactory,但XmlBeanFactory不实现BeanPostProcessor并且不会后处理注释:那么它不使用AutowiredAnnotationBeanPostProcessor。这可能会导致空指针异常。
我建议你改用ApplicationContext。