Spring注入dataSource(static field)到servlet类,但是servlet读取null

问题描述 投票:0回答:0

我使用嵌入式 tomcat。 在主要方法中,我创建了 Spring Annotion Context。 在主类中创建了一个返回数据源的静态方法。

在 servlet 类中使用注解 @Autowired 设置静态字段数据源的 setter 方法。

@Autowired
public void setDataSource(DataSource dataSource){
    IndexServlet.dataSource = dataSource;
    System.out.println("Autowired works!"+(IndexServlet.dataSource==null));
}

在控制台打印“Autowired works! false”,但在 servlet 的 doPost 方法中 dataSource 为空。

这里是主课

public class Main {
    public static void main(String[] args) throws Exception{
        ApplicationContext springContext = new AnnotationConfigApplicationContext(Main.class);
        Tomcat tomcat = new Tomcat();
        //...config tomcat
        tomcat.start();
        tomcat.getServer().await();
    }

    @Bean(name = "dataSource")
    public static DataSource getDataSource(){
        HikariConfig config = new HikariConfig();
        //...config database
        return new HikariDataSource(config);
    }
}
java spring tomcat jdbc dependency-injection
© www.soinside.com 2019 - 2024. All rights reserved.