2016-03-20 16 views
0

Ich bin neu im Frühling, und ich versuche, @Autowired Annotation in meiner Standalone-App zu verwenden, aber ich konnte es nicht schaffen. Hier ist meine Hauptklasse@Autowired Annotation funktioniert nicht im Frühjahr Standalone-Anwendung

MainDemo.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()); 
} 

SpringIntro.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"; 
} 
} 

Admininterface.java

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

AdminDao.java

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; 
    } 

} 

beans.xml

<bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <property name="url" value="jdbc:mysql://localhost:3306/dbschool" /> 
     <property name="username" value="root" /> 
     <property name="password" value="spinsci" /> 
    </bean> 
<bean id="jdbcTemplate" 
     class="org.springframework.jdbc.core.JdbcTemplate"> 

     <property name="dataSource" ref="dataSource" />  

    </bean> 

wenn ich laufe app durch main-Methode ich bin Null-Zeiger immer, wenn für adminDao in beans.xml Datei Bohnen hinzufügen Ich bekomme das Ergebnis, aber wenn ich @Autowired benutze, habe ich Probleme. Kann mir jemand helfen? Danke im Voraus.

Antwort

1

Sie verwenden XmlBeanFactory, aber XmlBeanFactory implementiert nicht BeanPostProcessor und verarbeitet keine Annotationen: Dann verwendet es nicht AutowiredAnnotationBeanPostProcessor. Das könnte Ihre Nullzeiger-Ausnahme verursachen.

Ich empfehle Ihnen stattdessen ApplicationContext verwenden.

+0

Oder nur Spring Boot, die die Notwendigkeit für die Hälfte davon beseitigen würde. – chrylis

+0

Danke, es funktioniert. –

Verwandte Themen