Reading up on Dependency injection in the Spring Framework. Class-binding is late-assigned in XML (mainly). Spring uses another (different) interpreted language, derived from JSP expressions.

Reading up on the Standard Template Library for C++. Class templates are written in this semi-interpreted template-script with tricky semantics, rather different from C++.

Right. This is doing badly a long-ago learned lesson. Lisp does all it’s meta-level stuff in … Lisp. A decades old insight. C++ has this newly-invented semi-interpreted declarative script for templates … that is tricky to interpret and not reusable. JSP and Spring share a very limited expression language, that is very much a niche, and not much worth reusing.

The Lisp community learned decades back the lesson of using the same language for meta-level stuff as for the regular level.

In the Java domain, I would use Javascript as the meta-language. Not quite the same level, but close enough, and able (in the case of Rhino) to readily access the Java world. The JSP expression language is a limited wart. Use Javascript.

There are lots of higher-order languages that could fit in this space, but the presence of Javascript in the browsers offers a selection criteria. Javascript is good enough.