You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring项目中@Autowired注入JiraClientModel时对象为null问题

问题根因

Spring的字段注入(@Autowired 直接标记在类成员变量上)的执行时机晚于类构造方法的执行周期:Spring需要先调用类的构造方法实例化对象,之后再反射注入标记了@Autowired的成员属性,因此你在构造方法中访问jiraClientModel时必然为null。

解决方案

方案1:改用构造方法注入(Spring官方推荐的注入方式)

直接将JiraClientModel作为构造方法的入参,Spring实例化JiraService时会自动将容器中的JiraClientModel实例注入到构造参数中,你可以直接在构造方法内使用:

@Component
@Getter
@Setter
@Log
public class JiraService {
    JiraClientModel jiraClientModel;

    public JiraService(JiraClientModel jiraClientModel,
                       @Value(value = "${jira.credentials.userName}") String userName,
                       @Value(value = "${jira.credentials.password}") String password,
                       @Value(value = "${jira.url}") String url,
                       @Value(value = "${jira.jql.query}") String query) throws URISyntaxException {
        this.jiraClientModel = jiraClientModel;
        // 这里直接操作jiraClientModel即可,不会为null
        jiraClientModel.setSomeValues(...);
    }
}

方案2:使用@PostConstruct注解执行初始化逻辑

把需要依赖注入完成后才能执行的初始化逻辑,放到被@PostConstruct修饰的方法中,该方法会在Spring完成所有属性注入之后自动触发:

@Component
@Getter
@Setter
@Log
public class JiraService {
    @Autowired
    JiraClientModel jiraClientModel;
    
    private String userName;
    private String password;
    private String url;
    private String query;

    public JiraService(@Value(value = "${jira.credentials.userName}") String userName,
                       @Value(value = "${jira.credentials.password}") String password,
                       @Value(value = "${jira.url}") String url,
                       @Value(value = "${jira.jql.query}") String query) throws URISyntaxException {
        // 构造方法只接收配置参数赋值给类成员
        this.userName = userName;
        this.password = password;
        this.url = url;
        this.query = query;
    }
    
    @PostConstruct
    private void init() {
        // 此处jiraClientModel已经完成注入,可以正常操作
        jiraClientModel.setSomeValues(...);
    }
}

内容的提问来源于stack exchange,提问作者Pandor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 19:18:03