Frühling - Wie auf eine bean programmatisch

Habe ich meine application-config-set-up programmgesteuert, und ich bin beim importieren einer Bohne wie diese:

@Configuration
@ImportResource( value= { "classpath:myBean.xml"})
public class AppConfig extends WebMvcConfigurerAdapter
{

Und in myBean.xml habe ich dieses:

  <bean id="myBeanId" class="my.domain.myBeanClass">
    <property name="sessionFactory" ref="my_session_factory" />
    <property name="someOtherProperty"...
  </bean>

Dies funktioniert gut und sessionFactory eingespritzt wird, in myBeanClass.

Jedoch wenn ich versuchen und zu instanziieren, die denselben bean programmatisch, chanhing ImportResource zu Import, bekomme ich "Kein entsprechendes bean vom Typ [org.hibernate.SessionFactory] gefunden für die Abhängigkeit..." - Fehler.

@Configuration
@Import(BeanConfig.class)
public class AppConfig extends WebMvcConfigurerAdapter
{

Bean Config-Klasse:

@Configuration
public class BeanConfig
{
  @Autowired
  private SessionFactory sessionFactory;

  @Bean(name="myBeanId")
  public MyBeanClass createMyBeanClass()
  {
    MyBeanClass mbc = new MyBeanClass();
    mbc.setSessionFactory(sessionFactory);
    ....
    return mbc;

edit: Die sessionFactory bean ist definitiv erstellt wird, wenn ich einen required = false, @Autowired, und dann manuell injizieren die sessionFactory, sobald alles geladen ist. Es funktioniert einwandfrei.

edit 2:
Ich habe nicht ein web.xml ich bin mit servlet 3 so erklärt haben, alles programmgesteuert. Dies ist mein web.xml entspricht

@Configuration
public class WalletInitialiser implements WebApplicationInitializer
{

  @Override
  public void onStartup(ServletContext aServletContext) throws ServletException
  {
    AnnotationConfigWebApplicationContext mvcContext
      = new AnnotationConfigWebApplicationContext();

    mvcContext.register(AppConfig.class);
    mvcContext.scan("config.packages", "class.packages");
    aServletContext.addListener(new ContextLoaderListener(mvcContext));
    //add security filters, dispatcher to servlet, logback

Habe ich meine SessionFactory konfiguriert in einer anderen Klasse, HibernateConfig in der config-Paket, das abgeholt wird von

mvcContext.scan("config.packages", "class.packages");

Auszug aus dieser Klasse ist:

@Configuration
@EnableTransactionManagement
public class HibernateConfig
{
  @Bean(name="my_session_factory")
  public LocalSessionFactoryBean baseSessionFactory()
  {
    LocalSessionFactoryBean lsfb= new LocalSessionFactoryBean();
    lsfb.setPackagesToScan("class.packages");
    lsfb.setAnnotatedPackages("class.packages");

    //add hibernate props for datasource
    return lsfb;
  }
}
Haben Sie sich auf Annotation-Basierte Konfiguration im Kontext (myBean.xml)??
Können Sie bitte auch zeigen, wie Sie Sie konfiguriert haben, die AppConfig mit Ihrem container(die web.xml Eintrag für das AppConfig), auch Sie haben wahrscheinlich eine andere config definieren Sie die SessionFactory Recht, kannst du bitte zeigen, dass config auch
das ist seltsam, Sie sind mit annoation getrieben config, aber dann importieren einer bean aus einer xml-Datei. sowohl Sie als auch fallen er annotation von java-basierten conifg, wie es ist, ist abhängig von xml sowieso. es ist unnötig verwirrend.
Das erste Beispiel, das ich gebe, wo ich bin, mit myBean.xml nur weil der annotation-driven Art und Weise nicht funktioniert. Ich habe nicht die Absicht zu verlassen, in. Das war nur ein Beispiel um zu zeigen, dass es etwas anderes in der Art @Import und @ImportResource behandeln Dinge.

InformationsquelleAutor kwh | 2012-12-07

Schreibe einen Kommentar