Disclaimer: I understand that trying to use Spring to inject static variables is considered bad practice (and I know there are ways around it, e.g. here). So ultimately I plan to redesign, but am curious about possible solutions or workarounds.
I am using Jakarta's Unstandard tag library (particularly useConstants) to easily expose public static final objects to my JSP pages. I want these static objects to initialize themselves from my database, which means I need to inject a JDBC Template or Data Source. So I want something like:
public class MyGroup {
    // @Autowire or inject somehow?
    private static /*final?*/ NamedParameterJdbcTemplate jdbcTemplate;
    public static final MyGroup GROUP_A = new MyGroup("GROUP_A");
    public static final MyGroup GROUP_B = new MyGroup("GROUP_B");
    public static final MyGroup GROUP_C = new MyGroup("GROUP_C");
    // Instance fields
    private int id;
    private String name;
    private String description;
    /**
     * Construct a group
     */
    public MyGroup() {}
    /**
     * Construct a group using information from the database
     * @param key the key to match
     */
    public MyGroup(String key) {
        // Do DB stuff using injected JDBC template
        this.id = id_from_DB;
        this.name = name_from_DB;
        this.description = desc_from_DB;
    }
}
In my JSP, I could simply do ${MyGroup.GROUP_A.id} and anywhere else in the Java code I could just MyGroup.GROUP_B.getName().
So the problem is that these groups must be final for the Jakarta library to pick them up, but I can't static initialize them via Spring. Thoughts?
 
     
    