Three requirements
Villagers breed when: 1) they have food (3 bread, 12 carrots, potatoes or beetroot thrown to share), 2) there are unclaimed beds for the child (one bed per new villager), and 3) they are willing — willingness triggers after they pick up enough food. Toss stacks of carrots at two villagers, watch the hearts, and a baby appears at a claimed bed.
The minimal breeder
A 3×3 enclosed room with 3 beds, two adult villagers and a composter (farmer villagers harvest and share crops automatically — farmers breed the fastest with zero feeding). An opening lets babies fall into a holding cell; a hopper-clock feeder or periodic carrot tossing keeps willingness high.
Feeding the trading hall
Your trading hall needs one villager per profession slot you actually use — 8–12 villagers covers a full library set plus farmers and clerks. Breed in bulk (babies take 20 minutes to adulthood), move them by minecart or boat (villagers board boats — the cheapest transport in the game), then lock professions by placing workstations. Zombie-scare events do not stop breeding but do stop trading — protect the hall with light.