Injecting fields via Spring into entities loaded by Hibernate

前端 未结 4 885
臣服心动
臣服心动 2020-12-14 08:54

I am looking for a way to inject certain properties via Spring in a bean that is loaded from the DB by Hibernate.

E.g.

class Student {
   int id; //l         


        
4条回答
  •  忘掉有多难
    2020-12-14 09:46

    While the aspectj way works, I'd say the standard spring / hibernate way is to register a LoadEventListener (read more in the hibernate core reference, the spring reference and this thread)

    here is a snip from the spring sessionfactory bean definition

    
        ...
        
            
                
                    
                
            
        
    
    

    and here is the LoadEventListener:

    public class MyLoadListener implements LoadEventListener{
    
        public void setSpringManagedProperty(String springManagedProperty){
            this.springManagedProperty = springManagedProperty;
        }
        private String springManagedProperty;
    
        @Override
        public void onLoad(LoadEvent event, LoadType loadType) throws HibernateException{
            if(MyEntity.class.getName().equals(event.getEntityClassName())){
                MyEntity entity = (MyEntity) event.getInstanceToLoad();
                entity.setMyCustomProperty(springManagedProperty);
            }
    
        }
    
    }
    

    Look mom, no aspectj needed.

提交回复
热议问题