我使用嵌入式 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);
}
}