如何在springboot中设置控制器级别的布尔值



我有一个名为WalletController的控制器类,我还有另一个具有布尔属性的转换器类。我在控制器中的每个方法上都将布尔值设置为true。有没有一种方法可以在控制器级别而不是方法级别设置布尔值,这样布尔值只对这个特定的控制器有效?

@RestController
@CrossOrigin(origins = "*")
@RequestMapping("/api/wallet")
public class WalletController {

private static final Logger logger = LoggerFactory.getLogger(WalletController.class);
@Autowired
private VoucherService voucherService;

@Autowired
MailManager mailManager ;

@Autowired
Converter converter;

@CrossOrigin(origins = "*")
@RequestMapping(value = "/create", method = RequestMethod.POST)
public @ResponseBody ResponseEntity saveTransaction(@RequestBody CreateTopupDTO createTopupDTO, HttpServletRequest httpServletRequest) {
//converter.supports = true;
System.out.println("------------------"+httpServletRequest.getRequestURI());
return voucherService.createVoucher(createTopupDTO);
}
@CrossOrigin(origins = "*")
@RequestMapping(value = "/withdraw", method = RequestMethod.POST)
public @ResponseBody ResponseEntity createWithdrawRequest(@RequestBody CreateWithdrawDTO withdrawDTO, HttpServletRequest httpServletRequest) {
//converter.supports =  true;
return voucherService.createWithdrawRequest(withdrawDTO);
}
@CrossOrigin(origins = "*")
@RequestMapping(value = "/currency", method = RequestMethod.GET)
public @ResponseBody ResponseEntity getListOfCurrencies(HttpServletRequest httpServletRequest) {
//converter.supports = true;
return voucherService.getListOfCurrencies();
}
@CrossOrigin(origins = "*")
@RequestMapping(value = "/transactions", method = RequestMethod.POST)
public @ResponseBody ResponseEntity getTransactions(@RequestBody TransactionInfoDTO  transactionInfoDTO, HttpServletRequest httpServletRequest) {
//converter.supports = true;
return voucherService.getTransactions(transactionInfoDTO);
}

@CrossOrigin(origins = "*")
@RequestMapping(value = "/transactions/properties", method = RequestMethod.GET)
public @ResponseBody ResponseEntity getPropertiesTransactions(  HttpServletRequest httpServletRequest) {
//converter.supports = true;
return voucherService.getPropertiesTransactions();
}

@CrossOrigin(origins = "*")
@RequestMapping(value = "/balance", method = RequestMethod.GET)
public @ResponseBody ResponseEntity getBalance(HttpServletRequest httpServletRequest) {
//converter.supports = true;
return voucherService.getBalance();
}

@CrossOrigin(origins = "*")
@RequestMapping(value = "/complete/balance", method = RequestMethod.GET)
public @ResponseBody ResponseEntity getWalletBalance(HttpServletRequest httpServletRequest) {
//converter.supports = true;
return voucherService.getWalletBalance();
}

@CrossOrigin(origins = "*")
@RequestMapping(value = "/complete/balance/v2", method = RequestMethod.GET)
public @ResponseBody ResponseEntity getWalletBalanceV2(HttpServletRequest httpServletRequest) {
//converter.supports=true;
return voucherService.getWalletBalanceV2();
}

@CrossOrigin(origins = "*")
@RequestMapping(value = "/banks", method = RequestMethod.GET)
public @ResponseBody ResponseEntity getBanks(HttpServletRequest httpServletRequest) {
//converter.supports=true;
return voucherService.getDepositBanks();
}
@CrossOrigin(origins = "*")
@RequestMapping(value = "/properties", method = RequestMethod.GET)
public @ResponseBody ResponseEntity getProperties( HttpServletRequest httpServletRequest) {
//converter.supports=true;
return voucherService.getPropertyDetailsForTransactions();
}

@CrossOrigin(origins = "*")
@RequestMapping(value = "/valuationfee", method = RequestMethod.POST)
public @ResponseBody ResponseEntity saveValuationFee(@RequestBody ValuationFeeDTO dto, HttpServletRequest httpServletRequest) {
//converter.supports=true;
return voucherService.saveValuationFee(dto);
}
}

您可以为转换器类创建自定义bean(避免在类上使用@Component(,并在需要时将其注入控制器中。

例如:

假设您有一个Converter类,如下所示:

public class Converter {
private boolean supports = false;
public boolean isSupports() {
return supports;
}
public void setSupports(boolean supports) {
this.supports = supports;
}
}

@Configuration类中创建自定义Converter bean。

@Configuration
public class SampleConfig {
@Bean(name = "converterSupportTrue")
public Converter beanOne() {
Converter converter = new Converter();
converter.setSupports(true);
return converter;
}

@Bean(name = "converterSupportFalse")
public Converter beanTwo() {
Converter converter = new Converter();
return converter;
} 
}

要测试的控制器:

@Controller
public class FirstController {
@Autowired
private Converter converterSupportTrue;
@GetMapping("/test/support1")
public void test() {
System.out.println(converterSupportTrue.isSupports());
}
}

另一个要测试的控制器;

@Controller
public class SecondController {
@Autowired
private Converter converterSupportFalse;
@GetMapping("/test/support2")
public void test() {
System.out.println(converterSupportFalse.isSupports());
}
}

您可以在整个应用程序中使用此bean,而无需编写样板代码。

最新更新