spring获取容器中的bean方法,进行调用方法(跳转方法1)
controller层
@Controller("userController")
public class UserController {
@Autowired
private UserService userservice;
/*@RequestMapping(value="/insert")
public int insert(String id,String name,String age) {
return userservice.insert(id,name, age);
}*/
@RequestMapping(value="/findByName")
@ResponseBody
public String findByName() {
User u = userservice.findByName();
System.out.println(u.toString());
if("1231231243".equals(u.getId())) {
UserController obj =(UserController)SpringUtil.getObject("userController");//获取的bean对象可以调用对象的方法
User us = obj.findByRight();
return us.toString();
}
return u.toString();
}
@RequestMapping(value="/findRightName")
@ResponseBody
public User findByRight() {
User u = new User();
u.setPassword("fasfa");
u.setId("12333333333333333");
return u;
}
}
//获取spring中带注解的类的工具类
//获取spring中带注解的类的工具类
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class SpringUtil implements ApplicationContextAware{
public static ApplicationContext ct;
//spring中获得bean
public static Object getObject(String beanId){
return ct.getBean(beanId);
}
@Override
public void setApplicationContext(ApplicationContext arg0) throws BeansException {
SpringUtil.ct = arg0;
}
}
3.注意事项,可能会出现事物管理@Transational方面的错误。若出现则在spring的xml中加上如下配置
<aop:aspectj-autoproxy expose-proxy="true"/>
若是springboot项目,在SpringBoot 入口类中添加
@EnableAspectJAutoProxy(exposeProxy = true)
4.重定向方法(跳转方法2)
@Controller
public class UserController {
@Autowired
private UserService userservice;
@RequestMapping(value="/findByName")
public String findByName(String name) {
User u = userservice.findByName();
System.out.println(u.toString());
return "redirect:/findRightName";
}
@RequestMapping(value="/findRightName")
@ResponseBody
public User findByRight() {
User u = new User();
u.setPassword("fasfa");
u.setId("12333333333333333");
return u;
}
}