Java 自动连线对象正在变为null
我正在为我的应用程序使用Spring Boot。我正在Java 自动连线对象正在变为null,java,spring,spring-boot,Java,Spring,Spring Boot,我正在为我的应用程序使用Spring Boot。我正在application.properties文件中定义JNDI名称 当我试图在下面的类中获取JdbcTemplate时,它的null: @Configuration public class DemoClass { @Autowired private JdbcTemplate template; @Bean private DataSource getDS(){ return templat
application.properties
文件中定义JNDI名称
当我试图在下面的类中获取JdbcTemplate
时,它的null
:
@Configuration
public class DemoClass
{
@Autowired
private JdbcTemplate template;
@Bean
private DataSource getDS(){
return template.getDataSource(); //NPE
}
}
另一类
@Component
public class SecondClass {
@Autowired
private JdbcTemplate template;
public void show(){
template.getDataSource(): // Working Fine
}
}
我不确定默认情况下是否配置了此项。。如果不是,那么您可以尝试自己配置:
@Autowired
DataSoure dataSource;
@Bean
public JdbcTemplate getJdbcTemplate() {
return new JdbcTemplate(dataSource);
}
在任何情况下,如果您只需要
数据源
,我认为它是由Spring Boot自动配置的,因此您可以在需要时直接自动连接它 我不确定默认情况下是否配置了此选项。。如果不是,那么您可以尝试自己配置:
@Autowired
DataSoure dataSource;
@Bean
public JdbcTemplate getJdbcTemplate() {
return new JdbcTemplate(dataSource);
}
在任何情况下,如果您只需要
数据源
,我认为它是由Spring Boot自动配置的,因此您可以在需要时直接自动连接它 默认情况下@Autowired
设置required=true
,因此DemoClass
不应由Spring构造
很可能您正在创建new DemoClass()
或完全禁用注释配置,并且DemoClass
类是手动注册的,例如使用XML
相反,请确保使用Spring的组件扫描发现
DemoClass
类,例如使用@SpringBootApplication
或@ComponentScan
,例如根据默认设置@Autowired
设置required=true
,因此DemoClass
不应由Spring构建
很可能您正在创建new DemoClass()
或完全禁用注释配置,并且DemoClass
类是手动注册的,例如使用XML
相反,请确保使用Spring的组件扫描(例如使用@SpringBootApplication
或@ComponentScan
查找DemoClass
类,例如根据
- 应用程序属性
数据库连接详细信息
spring.datasource.url=jdbc:oracle:thin:**
spring.datasource.username=Scott
spring.datasource.password=Tiger
spring.datasource.driver类名=oracle.jdbc.driver.OracleDriver
spring.datasource.tomcat.initial size=1
spring.datasource.tomcat.max active=1
spring.datasource.tomcat.minidle=1
spring.datasource.tomcat.max idle=1
- 应用程序属性
数据库连接详细信息
spring.datasource.url=jdbc:oracle:thin:**
spring.datasource.username=Scott
spring.datasource.password=Tiger
spring.datasource.driver类名=oracle.jdbc.driver.OracleDriver
spring.datasource.tomcat.initial size=1
spring.datasource.tomcat.max active=1
spring.datasource.tomcat.minidle=1
spring.datasource.tomcat.max idle=1
@Bean
public JdbcTemplate getJdbcTemplate(DataSource dataSource){
return new JdbcTemplate(dataSource)
}
或
如果你在getDS获得NPE。这意味着JdbcTemplate尚未注入,可能无法注入 通过
@Bean
public JdbcTemplate getJdbcTemplate(DataSource dataSource){
return new JdbcTemplate(dataSource)
}
或
请同时提供应用程序属性和启动配置。如果没有这些信息,没有人可以帮助您jdbc模板依赖于数据源。将数据源从模板中拉出是没有意义的。如果您需要的话,只需自动连接数据源。检查应用程序属性中的jndi名称和应用程序服务器上配置的名称。还要检查应用程序服务器上的数据源配置。请同时提供应用程序属性和启动配置。如果没有这些信息,没有人可以帮助您jdbc模板依赖于数据源。将数据源从模板中拉出是没有意义的。如果您需要的话,只需自动连接数据源。检查应用程序属性中的jndi名称和应用程序服务器上配置的名称。还要检查应用服务器上的数据源配置。