본문 바로가기

에러/Spring

[에러] <Spring> JdbcTemplate null pointer exception

에러


원인

◎ 데이터 크롤링을 리스너로 움직이도록 설정해 놓았다.

JdbcTemplate 초기화 타이밍 보다 크롤링이 움직이는 타이밍이 빠르다.

JdbcTemplate 초기화되어 있지 않기에 쿼리문 수행이 불가능하다.


해결

◎ 크롤링 리스너 맨 위에 DAO를 먼저 Autowired하도록 해준다.

@Component
public class CrawlingListener implements ApplicationListener<ContextRefreshedEvent> {

	@Autowired
	private ProductDAO pDAO;
	
    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
    	crawling();
    }
@Repository("productDAO")
public class ProductDAO {

	// 의존관계 ▶ DI(의존주입)
	@Autowired
	private JdbcTemplate jdbcTemplate;
	
	// 쿼리문
	private static final String SELECTALL = "";
	
	private static final String SELECTONE = "";

	private static final String INSERT = "INSERT INTO PRODUCT "
			+ "(PRODUCT_NAME, PRODUCT_DETAIL, COST_PRICE, RETAIL_PRICE, SALE_PRICE, STOCK, INGREDIENT, DOSAGE, EXPIRATION_DATE, REGISTER_DATE, MODIFY_DATE, SALE_STATE) "
			+ "	VALUES "
			+ "("
			+ "?, "
			+ "?, "
			+ "?, "
			+ "?, "
			+ "?, "
			+ "?, "
			+ "?, "
			+ "?, "
			+ "?, "
			+ "CURRENT_TIMESTAMP, "
			+ "CURRENT_TIMESTAMP, "
			+ "? "
			+ "	)";