如何在非@Controller类中使用@Service注解的bean?

在Spring MVC中

@Controller  
@RequestMapping ( "/test" )  
public class MyController {  
  
    @RequestMapping ( "/showView" )  
    public void showView( @PathVariable String variable1, @PathVariable ( "variable2" ) int variable2) {  
 		  // ...
    }  
}   

@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法。通俗来说,被Controller标记的类就是一个控制器,这个类中的方法,就是相应的动作。

@Service
public class MyServiceImpl implements iMyService {   
}

在MyController类中我们可以通过注解的方式,实例化MyServiceImpl对象,如下所示

@Autowired
private MyServiceImpl  myService;

但是以上这种写法,在非@Controller类中使用时,我们会发现注入的myService对象为null.
此时我们应该通过

	WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
	MyServiceImpl serv = wac.getBean("myServiceImpl", MyServiceImpl.class);

默认的service名是首字母小写的,当然通过@Service(name)来指定名字也是可以的。

你可能感兴趣的:(JAVA,WEB)