SpringMVC是否可以使用相同的 @autowired 多个控制器?

ep6jt1vc  于 2021-07-13  发布在  Java
关注(0)|答案(3)|浏览(357)

假设我们有两个不同的控制器类, AController.java 以及 BController.java .

public class AController {
    @Autowired
    private AdminService adminService;
 }

public class BController {
    @Autowired
    private AdminService adminService;
 }

我不知道这样行不行。
+编辑
adminservice(接口)前三名来自acontroller,另一名来自bcontroller。我对扳机没意见 selectNormalList() 直到我创造 selectCouponByTerm() .

public interface AdminService {

    List<Member> selectNormalList();

    List<Member> selectPartnerList();

    List<Coupon> selectCouponByDate(String date);

    List<Coupon> selectCouponByTerm(String startDate, String endDate);
}

adminserviceimpl(实现接口adminservice的)

@Service
public class AdminServiceImpl implements AdminService{

    @Autowired
    private static AdminDao adminDao;

    @Override
    public List<Member> selectNormalList() {    
        return adminDao.selectNormalList();
    }

    @Override
    public List<Member> selectPartnerList() {
        return adminDao.selectPartnerList();
    }

    @Override
    public List<Coupon> selectCouponByDate(String date) {
        return adminDao.selectCouponByDate(date);
    }

    @Override
    public List<Coupon> selectCouponByTerm(String startDate, String endDate) {
        return adminDao.selectCouponByTerm(startDate, endDate);
    }

}
6ojccjat

6ojccjat1#

我建议对服务类采用以下方法,即逻辑将引导您采用的结构方式 NULLPointerException ```
@Service
public class AdminServiceImpl implements AdminService{

    private AdminDao adminDao;

    @Autowired
    private AdminService adminService;

     public AdminServiceImpl (AdminDao adminDao){
        this.adminDao= adminDao;

@Override
public List selectNormalList() {
return adminDao.selectNormalList();
}

@Override
public List<Member> selectPartnerList() {
    return adminDao.selectPartnerList();
}

@Override
public List<Coupon> selectCouponByDate(String date) {
    return adminDao.selectCouponByDate(date);
}

@Override
public List<Coupon> selectCouponByTerm(String startDate, String endDate) {
    return adminDao.selectCouponByTerm(startDate, endDate);
}
然后在你的控制器里

@Controller
public class AController {
@Autowired
private AdminService adminService;
}
@Controller
public class BController {
@Autowired
private AdminService adminService;
}

eanckbw9

eanckbw92#

是的。

这就是依赖注入的要点。您可以将依赖项注入任何其他需要它的内容中。
不过,一定要注意你在注射什么;如果两个控制器共享相同的功能,以至于它们具有相同的依赖关系,那么它们真的应该是两个控制器吗?

vltsax25

vltsax253#

对。没关系。spring将在两个控制器中注入adminservice。必须在acontroller和bcontroller上使用@controller,在adminservice类上使用@service。

相关问题