java - 如何跨不同的 xml 文件访问 bean

标签 java hibernate spring

我的 Spring Hibernate 应用程序中有三个 xml 文件

Spring-Security.xml

<security:authentication-manager>
            <security:authentication-provider user-service-ref="customUserDetailsService">

            </security:authentication-provider>
    </security:authentication-manager>

    <!-- Use a Md5 encoder since the user's passwords are stored as Md5 in the database -->
    <bean class="org.springframework.security.authentication.encoding.Md5PasswordEncoder" id="passwordEncoder"/>

    <!-- A custom service where Spring will retrieve users and their corresponding access levels  -->
    <bean id="customUserDetailsService" class="com.vaannila.service.CustomUserDetailsService" >

     </bean>

hibernate-context.xml

在此处输入代码

<!-- Declare a datasource that has pooling capabilities-->   
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
            destroy-method="close"
            p:driverClass="${app.jdbc.driverClassName}"
            p:jdbcUrl="${app.jdbc.url}"
            p:user="${app.jdbc.username}"
            p:password="${app.jdbc.password}"
            p:acquireIncrement="5"
            p:idleConnectionTestPeriod="60"
            p:maxPoolSize="100"
            p:maxStatements="50"
            p:minPoolSize="10" />

<!-- Declare a transaction manager-->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" 
            p:sessionFactory-ref="sessionFactory" />

    <bean id="registrationDAO" class="com.vaannila.dao.RegistrationDAOimpl" >
  <constructor-arg ref="sessionFactory"/>
 </bean>

现在在我的 Spring 安全中我想要类似的东西

<bean id="customUserDetailsService" class="com.vaannila.service.CustomUserDetailsService" >
     <constructor-arg ref="registrationDAO"/>
     </bean

但是我的registrationDAO位于hibernate-config中,当我在spring Security中执行此操作时,它说没有名为registration DAO的bean

最佳答案

Spring 支持跨外部 jar 读取应用程序上下文。只需在上下文文件名中添加“classpath:”前缀即可。 Spring会在整个项目中寻找它。

例如,如果您正在创建 Web 应用程序,您可以像这样声明您的业务逻辑应用程序上下文 (web.xml)

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:applicationContext.xml <!-- tell Spring to look for context defined on the classpath -->
    </param-value>
</context-param>

这样您就可以根据需要使用尽可能多的上下文。

关于java - 如何跨不同的 xml 文件访问 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5459969/

相关文章:

java - hibernate 不进行急切获取(使用获取 ="join"和惰性 ="false")

java - 如何在 HashMap 中包含重复键?

spring - 在 JPA 中进行审计,类似于 Hibernate envers

java - org.hibernate.hql.internal.ast.ErrorCounter : unexpected token: (

css - Spring MVC : css does not work when adding slash at the end of URL

Java——反射。动态创建的setter方法中的Set Value多参数类对象

java - 使用 MongoTemplate 时如何将类型从 ObjectId 转换为 Long?

java - Java中Levenshtein算法的问题

javascript - 在 Java 中访问 JavaScript 对象的字段

java - 模具模拟器嵌套循环问题