Spring 启动 - @Autowired 在@Service 中不工作
Spring Boot - @Autowired is not working in @Service
我有一个 HelloService(@Service
) class。我正在尝试在我的 class.
中自动装配一个 ApplicationContext
成员
但它不起作用。我的 context
对象为空。
这是 HelloService Class
@Service
public class HelloService {
@Autowired
private ApplicationContext context;
public String getHello(){
if(context == null){
return "Autowiring didn't work. No Hello from the service";
}
else{
return "Hello";
}
}
}
我的HelloService
class被标记为@Service
。因此现在 spring 知道它是一个 bean,它应该自动装配 ApplicationContext
bean,它由 spring.
管理
以下是我验证 context
对象是否为空的方法。
我制作了一个简单的控制器 HelloController
,映射到 \hello
.
@RestController
public class HelloController {
@Autowired
private ApplicationContext context;
@GetMapping("/hello")
public String getHello(){
if(context!=null)
System.out.println("ApplicationContext object is Autowired in RestController.");
return (new HelloService()).getHello();
}
}
每当向 http://localhost:8080/hello
发出请求时,
我得到这样的回复:Autowiring didn't work. No Hello is there
,
并且这个输出在命令行
ApplicationContext object is Autowired in RestController.
我的问题:
- 为什么
ApplicationContext
对象在 @RestController
中自动装配,但在 @Service
中没有自动装配?
我试过 Why is my Spring @Autowired field null? :在这个问题中,OP 没有在 class 中使用 @Service 他正在做自动装配,但我正在使用 @Service。
我尝试了很多其他问题,但都没有帮助:
Cannot Autowire Service in HandlerInterceptorAdapter
您正在使用 new 关键字创建服务 bean,因此它不起作用。不要使用 new 关键字创建该对象,而是使用自动装配或注入。即
@RestController
public class HelloController {
@Autowired
private ApplicationContext context;
@Autowired
private HelloService service;
@GetMapping("/hello")
public String getHello(){
if(context!=null)
System.out.println("ApplicationContext object is Autowired in RestController.");
return service.getHello();
}
}
有关autowired vs new
的更多信息
我有一个 HelloService(@Service
) class。我正在尝试在我的 class.
中自动装配一个 ApplicationContext
成员
但它不起作用。我的 context
对象为空。
这是 HelloService Class
@Service
public class HelloService {
@Autowired
private ApplicationContext context;
public String getHello(){
if(context == null){
return "Autowiring didn't work. No Hello from the service";
}
else{
return "Hello";
}
}
}
我的HelloService
class被标记为@Service
。因此现在 spring 知道它是一个 bean,它应该自动装配 ApplicationContext
bean,它由 spring.
以下是我验证 context
对象是否为空的方法。
我制作了一个简单的控制器 HelloController
,映射到 \hello
.
@RestController
public class HelloController {
@Autowired
private ApplicationContext context;
@GetMapping("/hello")
public String getHello(){
if(context!=null)
System.out.println("ApplicationContext object is Autowired in RestController.");
return (new HelloService()).getHello();
}
}
每当向 http://localhost:8080/hello
发出请求时,
我得到这样的回复:Autowiring didn't work. No Hello is there
,
并且这个输出在命令行
ApplicationContext object is Autowired in RestController.
我的问题:
- 为什么
ApplicationContext
对象在@RestController
中自动装配,但在@Service
中没有自动装配?
我试过 Why is my Spring @Autowired field null? :在这个问题中,OP 没有在 class 中使用 @Service 他正在做自动装配,但我正在使用 @Service。
我尝试了很多其他问题,但都没有帮助:
Cannot Autowire Service in HandlerInterceptorAdapter
您正在使用 new 关键字创建服务 bean,因此它不起作用。不要使用 new 关键字创建该对象,而是使用自动装配或注入。即
@RestController
public class HelloController {
@Autowired
private ApplicationContext context;
@Autowired
private HelloService service;
@GetMapping("/hello")
public String getHello(){
if(context!=null)
System.out.println("ApplicationContext object is Autowired in RestController.");
return service.getHello();
}
}
有关autowired vs new
的更多信息