Spring 在非控制器中启动 application.properties 自定义变量 class
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);
}
}
Returns“空”
@Service
public class inviteservice {
@Autowired inviteconfig inviteconfig;
public void invite() {
System.out.println(inviteconfig);
}
}
@Configuration
@Data
public class inviteconfig {
private String test;
}
inviteservice
class 未针对 Spring IoC(控制反转)配置为 bean,因此 Spring 不会处理 inviteservice
class 生命周期。在这种情况下,@Autowired
是没有用的。
要解决此问题,请尝试将 @Component
注释添加到 invitesevice
,以将其声明为组件:
@Component
public class inviteservice {
@Autowired inviteconfig inviteconfig;
public void invite() {
System.out.println(inviteconfig);
}
}
对于控制器,@RestController
、Spring 会将您的 class 识别为 Spring 组件。
最后,不要忘记使用 Spring IoC 注入 inviteservice
(使用 @Autowired
注释,或其他方式)
inviteservice class 应该用@Component 或@Service 注释
@Component
public class inviteservice {
...
为什么 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);
}
}
Returns“空”
@Service
public class inviteservice {
@Autowired inviteconfig inviteconfig;
public void invite() {
System.out.println(inviteconfig);
}
}
@Configuration
@Data
public class inviteconfig {
private String test;
}
inviteservice
class 未针对 Spring IoC(控制反转)配置为 bean,因此 Spring 不会处理 inviteservice
class 生命周期。在这种情况下,@Autowired
是没有用的。
要解决此问题,请尝试将 @Component
注释添加到 invitesevice
,以将其声明为组件:
@Component
public class inviteservice {
@Autowired inviteconfig inviteconfig;
public void invite() {
System.out.println(inviteconfig);
}
}
对于控制器,@RestController
、Spring 会将您的 class 识别为 Spring 组件。
最后,不要忘记使用 Spring IoC 注入 inviteservice
(使用 @Autowired
注释,或其他方式)
inviteservice class 应该用@Component 或@Service 注释
@Component
public class inviteservice {
...