register provider annotation driven