相关疑难解决方法(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 beans 没有被注入到 Vaadin 视图中

我已经下载了 Vaadin Flow 启动器并尝试使用它,但由于某种原因,bean 没有被注入:

@PageTitle("About")
@Route(value = "about", layout = MainLayout.class)
public class AboutView extends VerticalLayout {
    
    @Autowired
    private UserService userService;
    
    public AboutView() {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

userService 仍然为空。

我仍然可以通过构造函数传递 bean:

@PageTitle("About")
@Route(value = "about", layout = MainLayout.class)
public class AboutView extends VerticalLayout {
    public AboutView(UserService userService) {
        ...
    } 
}
Run Code Online (Sandbox Code Playgroud)

但这并不总是很方便。

我在同一个项目中创建了一个 REST 服务,即使没有注释,注入也能正常工作:

@RestController
@AllArgsConstructor
@RequestMapping("user")
public class UserController {

    private UserService userService;    
    ...
}
Run Code Online (Sandbox Code Playgroud)

Vaadin Flow 有什么问题?我正在使用 Vaadin Flow 24.0.0.alpha8、SpringBoot 3.0.1 和 Java 19。

PS顺便说一下,我也尝试过 Vaadin …

vaadin spring-boot vaadin-flow

0
推荐指数
1
解决办法
202
查看次数