相关疑难解决方法(0)

为什么我的Spring @Autowired字段为空?

注意:这是针对常见问题的规范答案.

我有一个Spring @Serviceclass(MileageFeeCalculator),它有一个@Autowiredfield(rateService),但该字段是null我尝试使用它时.日志显示正在创建MileageFeeCalculatorbean和MileageRateServicebean,但NullPointerException每当我尝试mileageCharge在我的服务bean上调用该方法时,我都会得到.为什么Spring没有自动装配领域?

控制器类:

@Controller
public class MileageFeeController {    
    @RequestMapping("/mileage/{miles}")
    @ResponseBody
    public float mileageFee(@PathVariable int miles) {
        MileageFeeCalculator calc = new MileageFeeCalculator();
        return calc.mileageCharge(miles);
    }
}
Run Code Online (Sandbox Code Playgroud)

服务类:

@Service
public class MileageFeeCalculator {

    @Autowired
    private MileageRateService rateService; // <--- should be autowired, is null

    public float mileageCharge(final int miles) {
        return (miles * rateService.ratePerMile()); // <--- throws NPE
    }
}
Run Code Online (Sandbox Code Playgroud)

应该自动装配的服务bean,MileageFeeCalculator但它不是:

@Service …
Run Code Online (Sandbox Code Playgroud)

java null spring nullpointerexception autowired

555
推荐指数
14
解决办法
42万
查看次数

Spring Boot无法识别application.properties文件

我正在尝试使用Spring Boot配置DynamoDb客户端,并将我的端点和配置信息放在我的resources/application.properties文件中.但是,Spring Boot似乎没有获得这些属性.它确实选择了我存储在同一文件中的"server.default"密钥,因此它肯定会识别文件本身.

这是我的application.properties文件和我正在尝试将属性加载到(DynamoDBClientMapper)的类:

amazon.dynamodb.endpoint=http://localhost:8000/
amazon.dynamodb.region=us-west-1
amazon.aws.accesskey=key
amazon.aws.secretkey=key2

server.port=8080
Run Code Online (Sandbox Code Playgroud)

这是我的项目结构: 在此输入图像描述

这是我正在尝试加载属性的相关类.我尝试了@PropertySource注释和新的属性文件,以及EnableAutoConfiguration,但都没有注册属性文件.

@PropertySource("database.properties")
public class DynamoClientMapper {

    @Value("${amazon.dynamodb.endpoint}")
    private String amazonDynamoDBEndpoint;

    @Value("${amazon.aws.accesskey}")
    private String amazonAWSAccessKey;

    @Value("${amazon.aws.secretkey}")
    private String amazonAWSSecretKey;

    @Value("${amazon.aws.region}")
    private String amazonAWSRegion;
Run Code Online (Sandbox Code Playgroud)

这是我的App.java:

@SpringBootApplication
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class App {

//    private static final Logger logger = Logger.getLogger(App.class.toString());

    public static void main(String[] args){
        SpringApplication.run(App.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是堆栈跟踪:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dynamoClientMapper' defined in file [C:\Users\ychen4\Desktop\DiningApplication\target\classes\main\java\com\dining\dao\DynamoClientMapper.class]: Instantiation of bean failed; …
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot

17
推荐指数
1
解决办法
5万
查看次数

Spring Boot:@Value返回null

我想使用application.properties文件中的值,以便在另一个类的方法中传递它.问题是值总是返回NULL.可能是什么问题呢?提前致谢.

application.properties

filesystem.directory=temp
Run Code Online (Sandbox Code Playgroud)

FileSystem.java

@Value("${filesystem.directory}")
private static String directory;
Run Code Online (Sandbox Code Playgroud)

java spring-boot application.properties

10
推荐指数
4
解决办法
2万
查看次数

在Filter中具有@Value属性的SpringBoot为null

我正在使用SpringBoot的@Value注释从默认的application.properties文件填充对象属性,但是在Filter覆盖中看到一些奇怪的行为。

我的调试器中有两个断点:

@Component
  public class BasicFilter implements Filter {

  @Value("${aad.client_id}")
  private String clientId;

  @Bean
  public FilterRegistrationBean registerFilter() {
    FilterRegistrationBean registration = new FilterRegistrationBean();
    registration.setFilter(new BasicFilter()); // <-- 1.
    registration.addUrlPatterns("/secure/*");
    return registration;
  }

  public void doFilter(ServletRequest request, ServletResponse response,
                     FilterChain chain) throws IOException, ServletException {
    if (request instanceof HttpServletRequest) { // <- 2.
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        ...
Run Code Online (Sandbox Code Playgroud)

在1 .: this.client_id处设置为'foo'(来自application.properties A2 2 .: this.client_id为空

对不同/缺失值有任何解释吗?

java spring-boot

4
推荐指数
1
解决办法
2096
查看次数