繁体   English   中英

Spring 在非控制器 class 中启动 application.properties 自定义变量

[英]Spring Boot application.properties custom variable in a non-controller class

application.properties 怎么会在 RestController 中工作,但不能在服务 class 中工作?

//application.properties
test=test

完美运行!

@RestController
public class invitecontroller {

    @Autowired inviteconfig inviteconfig;
    
    @PostMapping("/v1/invite")
    public void invite(@RequestBody XXX XXX) {

        System.out.println(inviteconfig);

    }
}

返回“空”

@Service
public class inviteservice {
    
    @Autowired inviteconfig inviteconfig;

    public void invite() {
       System.out.println(inviteconfig);
    }
}
@Configuration
@Data
public class inviteconfig {
    private String test;
}

邀请服务inviteservice没有为 Spring IoC(控制反转)配置为 bean,因此 Spring 将不会处理inviteservice生命周期。 在这种情况下, @Autowired毫无用处。

要解决此问题,请尝试将@Component注释添加到invitesevice ,将其声明为组件:

@Component
public class inviteservice {
    
    @Autowired inviteconfig inviteconfig;

    public void invite() {
       System.out.println(inviteconfig);
    }
}

对于 controller,使用@RestController时,Spring 会将您的 class 识别为 Z38008DD81C2F4D1DE798 组件。

最后别忘了使用inviteservice IoC 注入邀请服务(使用@Autowired注解,或者其他方式)

邀请服务 class 应使用 @Component 或 @Service 注释

@Component 
public class inviteservice { 
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM