spring boot application.properties非控制器类中的自定义变量

o8x7eapl  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(333)

为什么application.properties可以在restcontroller中工作,而不能在服务类中工作?

//application.properties
test=test

工作完美!

@RestController
public class invitecontroller {

    @Autowired inviteconfig inviteconfig;

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

        System.out.println(inviteconfig);

    }
}

返回“null”

@Service
public class inviteservice {

    @Autowired inviteconfig inviteconfig;

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

edqdpe6u1#

这个 inviteservice 类没有为spring ioc(控制反转)配置为bean,因此spring不会处理 inviteservice 类生命周期。在这种情况下, @Autowired 是没用的。
要解决此问题,请尝试添加 @Component 注解到 invitesevice ,将其声明为组件:

@Component
public class inviteservice {

    @Autowired inviteconfig inviteconfig;

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

对于控制器 @RestController ,spring会将类识别为spring组件。
最后,别忘了注射 inviteservice 使用spring ioc(使用 @Autowired 注解或其他方式)

jmp7cifd

jmp7cifd2#

inviteservice类应该用@component或@service注解

@Component 
public class inviteservice { 
...

相关问题