1
resposta

Spring JDK 11 - como fazer meu @RestController passar por uma classe antes do model?

Criei uma class produtos em model, depois fiz uma classe desconto que calcula o desconto do produto. Preciso que no controller - acho, avise que tem que passar pela classe desconto depois a class produto.

Essa e a model @Data @Entity @Table(name = "produtos") public class ProdutosModel {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long codigo;

@Column(length = 50, nullable = false)
private String nome;

@Column(length = 10, nullable = false)
private Double valor;

@Column(name = "porcentagem_produto")
private Double porcentagemDesconto;

@Column(name = "desconto_produto")
private Double descontoProduto;

}

public class descontoProdutos { public Double desconto(ProdutosModel produtosModel){ Double resultado = produtosModel.getPorcentagemDesconto() - produtosModel.getValor(); return resultado; } }

1 resposta

Olá Crispim,

Pelo que entendi, você quer que o seu @RestController passe pela classe desconto antes de chegar à classe produto. Para isso, você pode criar um serviço que utilize a classe desconto e a classe produto para realizar as operações necessárias.

Por exemplo, você pode criar uma classe chamada ProdutoService que tenha um método que receba um objeto ProdutosModel e retorne o objeto com o desconto aplicado. Dentro desse método, você pode chamar o método da classe desconto para calcular o desconto e, em seguida, aplicá-lo ao objeto produto.

Algo assim:

@Service public class ProdutoService {

@Autowired
private DescontoProdutos descontoProdutos;

public ProdutosModel aplicarDesconto(ProdutosModel produto) {
    Double desconto = descontoProdutos.desconto(produto);
    produto.setDescontoProduto(desconto);
    produto.setValor(produto.getValor() - desconto);
    return produto;
}

}

E no seu @RestController, você pode injetar o ProdutoService e usá-lo para aplicar o desconto antes de retornar o objeto para o cliente.

@RestController @RequestMapping("/produtos") public class ProdutosController {

@Autowired
private ProdutoService produtoService;

@GetMapping("/{codigo}")
public ProdutosModel getProduto(@PathVariable Long codigo) {
    ProdutosModel produto = // buscar produto pelo código
    return produtoService.aplicarDesconto(produto);
}

}

Espero ter ajudado e bons estudos!