gpt4 book ai didi

java - 为什么我的 @Autowired DataSource 和 JdbcTemplate 变为 null?

转载 作者:行者123 更新时间:2023-12-02 06:25:48 25 4
gpt4 key购买 nike

我正在尝试在配置类中定义数据源和 jdbctemplate bean。然而,每当我将它们自动连接到 Restcontroller 类时,它们都会变为 null。为什么?

在我的配置类中

@Configuration
@ComponentScan({ "org.airi.airibot.controllers", "org.airi.airibot.configs" })
public class DatabaseConfig {
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.postgresql.Driver");
dataSource.setUrl("jdbc:postgres://localhost:5432/testdb");
dataSource.setUsername("testuser");
dataSource.setPassword("testpassword");
return dataSource;
}

@Bean
public SimpleJdbcCall spCall() {
SimpleJdbcCall sp_call = new SimpleJdbcCall(dataSource());
return sp_call;
}


@Bean public JdbcTemplate jdbcTemplate() {
JdbcTemplate jdbc_template = new JdbcTemplate(dataSource());
return jdbc_template;
}

}

restcontroller 类内部

@CrossOrigin(origins = "http://localhost:4200")
@RestController
public class TestController {

@Autowired
public DataSource dataSource;

@Autowired
public JdbcTemplate jdbcTemplate;

private List<DiscordServer> servers = createList();

@RequestMapping(value = "/server-emotes", method = RequestMethod.GET, produces = "application/json")
public List<DiscordServer> getServers() {
return servers;
}

private List<DiscordServer> createList() {
List<DiscordServer> temp_servers = new ArrayList<>();

//TODO: logic to add servers

System.out.println(dataSource);
return temp_servers;
}


public int getCountOfServers() {
int server_count = jdbcTemplate.queryForObject( "SELECT COUNT(*) FROM DISCORD_SERVER",Integer.class);
return server_count;
}


}

每次我尝试编译时,即使我没有手动实例化任何东西,只是让 spring 通过 Autowiring 来管理所有实例,我也会收到来自 Autowiring 字段的空指针异常。

最佳答案

您是否尝试将其放入构造函数中。并将它们设为私有(private)。就这样


private DataSource dataSource;
private JdbcTemplate jdbcTemplate;

@Autowired
TestController (DataSource dataSource, JdbcTemplate jdbcTemplate){
this.dataSource = dataSource;
this.jdbcTemplate = jdbcTemplate;
}

关于java - 为什么我的 @Autowired DataSource 和 JdbcTemplate 变为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55787199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com