You seem to think the SPI peripheral is buffering an entire message in hardware. That is not the case. If you want the message buffered, that is what the interrupt handler does. Each time it gets the interrupt, it pulls the byte out, puts it in a buffer, then starts the transfer of the next byte. If you do it that way, you can treat it similarly to a UART.
But you do not have to use interrupts at all, since the SPI peripheral does not receive data asynchronously like a UART. You can simply be in a loop sending / receiving (which is one operation) data and buffering it until the message is complete.
Unless you see a compelling need, like needing to do other processing during the byte transfer, I would not use interrupts at all. It only makes the code more complex and difficult.
But you do not have to use interrupts at all, since the SPI peripheral does not receive data asynchronously like a UART. You can simply be in a loop sending / receiving (which is one operation) data and buffering it until the message is complete.
Unless you see a compelling need, like needing to do other processing during the byte transfer, I would not use interrupts at all. It only makes the code more complex and difficult.

