This is probably one of the cases that you'd want to use a before notification, but it depends on the details of how you're doing configuration of the service.
service "whatever" do
template "/etc/whatever.conf" do
notifies :stop, "service[whatever]", :before
notifies :start, "service[whatever]", :immediately
the problem is that not all resources correctly support being the source of a before notification and they need to run correctly in why-run mode, which many resources don't, so depending on the complexity of the details of what you need to do to configure the resource this may work or not.
to be able to correctly stop the service though you need to know if the service needs to be configured or not, so one way or another you need to solve that problem.
if you can somehow have a simple test that the running service is out of date, then it becomes a lot simpler with a custom resource that does all the work of stop-reconfigure-start and then you hang an only_if off of that custom resource and things would be much simpler -- but that offloads the possible complexity onto the black box of the method that determines if the service is out of date.
things get way simpler if you can configure the service and then just bounce it without stopping it first, everything gets much more horrible due to that requirement being there.