How to implement busy spinner with button

What should happen when a user clicks on a button that triggers an action that takes a short amount of time to complete, showing a busy spinner to indicate processing?

  • [click]↖ => [click] ↖⚙ - Mouse cursor changes to system busy spinner cursor
  • [click] => ⚙ - Busy spinner replaces button entirely
  • [click] => [ ⚙ ] - Busy spinner replaces button text
  • [click] => [click ⚙] - Busy spinner appears inside button
  • [click] => [click] ⚙ - Busy spinner appears outside button
  • [click] => [⚙ please wait...] - Busy spinner replaces button text, accompanied by text
  • [click] => ⚙ please wait... - Busy spinner replaces button entirely, accompanied by text

Which one of the above solutions is the most user-friendly?