Spring Framework Autocâblés Exception De Pointeur Null

Je suis l'apprentissage du Printemps et je vais avoir quelques problèmes en essayant de mettre en place un relativement basique projet pour le Printemps. Je suis en création d'une application de simplement lire à partir d'une base de données, mais je vais avoir des problèmes avec permettra à l'autowiring, ou l'absence de celui-ci. Mon GetCustomerEvent classe est en train de lancer une exception de pointeur null dans la GetCustomers() méthode, comme les CustomerService variable n'a pas été initialisé. Quelqu'un peut-il me diriger dans la bonne direction ici?

Application.class

package org.ben.test.main;
@Configuration
@ComponentScan(basePackages={"org.ben.test.persistence", "org.ben.test.main"})
public class Application {

    @Bean
    public CustomerService customerService() {
        return new CustomerService();
    }

    @Bean 
    public DataSource getDataSource() {
        DriverManagerDataSource dmds = new DriverManagerDataSource();
        dmds.setDriverClassName("org.postgresql.Driver");
        dmds.setUrl("jdbc:postgresql://localhost:5432/Customers");
        dmds.setUsername("postgres");
        dmds.setPassword("postgres");
        return dmds;

    }

    @Bean
    public JdbcTemplate jdbcTemplate() {
        DataSource ds = getDataSource();
        JdbcTemplate jdbc = new JdbcTemplate(ds);
        return jdbc;
    }

    public static void main(String[] args) {
        GetCustomerEvent ev = new GetCustomerEvent();
        ev.GetCustomers();
    }
}

CustomerService.class

package org.ben.test.persistence;

@Component
public class CustomerService {

    @Autowired JdbcTemplate jdbcTemplate;

    public CustomerService() {

    }

    public void getCustomers() {
        jdbcTemplate.query("SELECT * FROM Customers", new RowMapper() {
            @Override
            public Object mapRow(ResultSet arg0, int arg1) throws SQLException {
                System.out.println(arg0.getString("firstName"));
                return null;
            }
        });
    }

}

GetCustomerEvent.class

package org.ben.test.persistence;


@Component
public class GetCustomerEvent {

    @Autowired 
    CustomerService customerService;

    public GetCustomerEvent() {

    }

    public void GetCustomers() {
        customerService.getCustomers();
    }
}
  • Les Annotations sont simplement des métadonnées. Ils ne font rien sur leur propre.
InformationsquelleAutor Ben Harris | 2014-08-14