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;
}
}
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieses problem kann in Bezug auf die Wie man factoryBeans Arbeit.... Obwohl es nicht eine exakte übereinstimmung Konfiguration Der Hibernate-Session-Factory kann, geben Einblicke in eine Arbeit um.
Ich würde vorschlagen, Sie versuchen, diese:
Möglicherweise gibt es andere Wege, dies zu beheben, habe ich nicht verfolgt, die JIRA-issues in der erwähnten Quelle-forum, Sie möglicherweise auf einem "standard" - Weg. Alternativ die Feder Dokumentation geben einen Einblick in die Handhabung von FactoryBeans in java-config.
InformationsquelleAutor Pyranja