If you or your son can't afford a trainer, or don't have the time for one, you can try to socialize the dog yourself. It's going to be harder than socializing a puppy, but it's definitely doable.
Most important thing is to ALWAYS have treats handy. Preferably treats that the dog really loves. The goal is to associate strange things with a positive reinforcer (i.e., food). Cavaliers usually LOVE food so it shouldn't be hard.
For instance, when you are out for a walk, and you see someone walking down the street, far away. Teach the dog to pay attention to you when you say his name, and give him a treat whenever he stops paying attention to the person/strange thing and looks at you instead. Praise excessively. Be extra aware of your surroundings. Ideally, you want to notice the strange thing BEFORE the dog does, so that you can start getting his attention before he becomes too focused on barking.
Start with bringing him on walks in deserted streets/areas first, instead of busy streets. That way, there are not so many strange things you have to keep a look out for.
Same thing for when people come over. Put him in a sit-stay, keep praising/treating. Get the guests to give him treats as well so that he associates strange people with good things (treats). Basically, you want to reinforce good behaviour (whenever he pays attention to YOU instead of a strange thing, give a treat), and get him to stop focusing on whatever is triggering his barking. Calling his name and redirecting his attention to you to get a treat is a great way to get him to stop paying attention to whatever is making him bark.
Cadence the tricolour Papillon (DOB: July 2nd, 2009) & Lyra the blenheim Cavalier (DOB: April 28th, 2011)