我正在学习Spring,在尝试建立一个相对基本的Spring项目时遇到了一些问题。我正在创建一个应用程序以简单地从数据库中读取数据,但是我在自动装配方面遇到问题,或者缺少该问题。我的GetCustomerEvent类在GetCustomers()方法中引发了空指针异常,因为CustomerService尚未初始化变量。有人可以在这里指出正确的方向吗?
GetCustomerEvent
GetCustomers()
CustomerService
应用程序类
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(); } }
您没有初始化Spring容器。
您需要创建上下文以使其起作用。