当前位置: 首页 > 工具软件 > saas-base > 使用案例 >

【SaaS - Export项目】10 - BaseController作为controller的父类,抽出重用

元胡媚
2023-12-01

我们前面对部门进行操作,那都是基于一个公司而言的,对于不同的公司,它的部门是不同的,显示的数据也应该是不同的,所以我们应该将公司信息抽取出来,设置它为登录的公司信息,这里先设置默认值id=1的公司,后期修改。
然后对其功能执行的时候,基础BaseController作父类,就能拥有它的所有属性。

抽取相同部门作为BaseController父类

子类继承父类,拥有父类的所有属性。
获取父类的公司信息,通过公司显示对应的数据,获取父类自动装载的request,response,session,applicationContext等信息

//定义父类BaseController,让子类继承父类的request,session,response,并且注入对象
//子类继承父类,可以自动拥有父类的非私有成员(方法或者变量)
//当前默认登录的公司id为1,名称为吉首大学
public class BaseController {
    //定义一个可以返回companyId,对部门管理要看公司,这里先设死为1,也就是对id为1的公司的部门进行管理
    public String getLoginCompanyId(){
        return "1";
    }
    //定义一个可以返回companyName
    public String getLoginCompanyName(){
        return "吉首大学";
    }

    //在父类中定义成员变量 request,session,response,并且注入对象
    // 以后控制器方法可以直接使用
    @Autowired
    protected HttpServletRequest request;
    //注入session
    @Autowired
    protected HttpSession session;
    //注入response
    @Autowired
    protected HttpServletResponse response;//需要disable inspection

}

测试:设置一个继承基类BaseController的controller来访问基类的对象

@Controller
@RequestMapping("/system/testBase")
public class TestBaseController extends BaseController {
	//测试获取基类BaseController的request请求
	@RequestMapping(path="/testRequest",method ={ RequestMethod.GET})
    public String testRequest(HttpServletRequest request){//springmvc会赋值

        l.info("testRequest request="+request.getParameter("age"));
        request.setAttribute("username","strive_day");

        return "testBase";
    }

}

好处

  • 继承 BaseController的类可以调用获取companyId与companyName的方法
  • 控制器方法还可以直接使用request,response,session等对象(springmvc可以给控制器成员变量赋值)
 类似资料: