Johnson agreed a two-year deal at Valley Parade.
Johnson was also wanted by Crewe, where he spent last season on loan, and had attracted interest from Barnsley.