Johnson's move will surprise many as earlier this week he told a local newspaper in Taunton that he wanted to stay at Somerset. His contract expired at the end of the summer and he had been linked with a possible move to Kent.
Johnson, who was born in Chertsey and played his early club cricket for Sunbury in Middlesex, made his county debut in 1992. In 89 first-class appearances over the next nine seasons he took 273 wickets, including 10 for 45 against Derbyshire in 1994, the first Englishman to take all ten in a first-class innings for 30 years. In six seasons at Somerset he took 227 wickets in 66 first-class outings.
His England ambitions were cut short by injuries just as he broke into the side in 2003, and that has very much been the story of his career as a whole. He was also picked to tour South Africa in 1994-95 but had to withdraw after suffering back problems and he only played in half of Somerset's Championship matches in 2006.
Johnson is the latest close-season signing by Middlesex as they attempt to rebuild after a dismal season in 2006. They have already signed Sri Lanka's Chaminda Vaas and India's Murali Kartik.