1

私の永続化構成クラスは次のようになります。

@Configuration
@EnableTransactionManagement
public class PersistenceConfig {

    @Autowired
    private Environment env;

    // code here

    @Bean(name = "dataSource")
    public DataSource dataSource()
    {
        System.out.println("------------------------datasource----------------------");
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
        dataSource.setUrl(env.getProperty("jdbc.url"));
        dataSource.setUsername(env.getProperty("jdbc.username"));
        dataSource.setPassword(env.getProperty("jdbc.password"));
        return dataSource;
    }


}

そして、私はxml構成クラスを持っています:

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oauth="http://www.springframework.org/schema/security/oauth2"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:sec="http://www.springframework.org/schema/security" xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/security/oauth2 http://www.springframework.org/schema/security/spring-security-oauth2-2.0.xsd
  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
  http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd ">

<authentication-manager alias="authenticationManager"
                            xmlns="http://www.springframework.org/schema/security">
     <authentication-provider>

        <user-service>
            <user name="username" password="password" authorities="USER_ROLE" />
        </user-service>


        <jdbc-user-service data-source-ref="dataSource"
                               users-by-username-query="query here"
                               authorities-by-username-query="query here" />

    </authentication-provider>
</authentication-manager>
<!-- code here -->

だから私は@Beanで注釈が付けられた" dataSource " と呼ばれる Bean を(永続化構成クラスで)に注入したいのですが、どうすればできますか?<jdbc-user-service data-source-ref="dataSource" ... >

4

3 に答える 3

0

Springが以下を含む構成ファイルをロードするように、構成ファイルのロード順序を変更して機能させました。

<context:component-scan base-package="com.rsone.*" />
<context:annotation-config />
<mvc:annotation-driven/>

私の webSecurityConfig.xml (上記の構成ファイル) の前に

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            WEB-INF/mvc-servlet.xml
            classpath:webSecurityConfig.xml
        </param-value>
</context-param>
于 2015-05-07T13:50:29.040 に答える
0

「dataSource」Beanを作成しているPersistenceConfigクラスの前にxml構成をロードしているためです。最初にクラスをロードし、次に xml 構成をロードします。

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oauth="http://www.springframework.org/schema/security/oauth2"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:sec="http://www.springframework.org/schema/security" xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/security/oauth2 http://www.springframework.org/schema/security/spring-security-oauth2-2.0.xsd
  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
  http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd ">
  <context:component-scan base-package="your_package.PersistenceConfig" /> 
    <context:annotation-config /><mvc:annotation-driven/> 
<authentication-manager alias="authenticationManager"
                            xmlns="http://www.springframework.org/schema/security">
     <authentication-provider>

        <user-service>
            <user name="username" password="password" authorities="USER_ROLE" />
        </user-service>


        <jdbc-user-service data-source-ref="dataSource"
                               users-by-username-query="query here"
                               authorities-by-username-query="query here" />

    </authentication-provider>
</authentication-manager>
<!-- code here -->
于 2015-05-07T12:53:13.513 に答える
0

これを試して:

<bean class="PersistenceConfig.class"/>

あなたのxml設定で

ヒント: このポスト プロセッサがあることを確認してください

<bean class="org.springframework.config.java.process.ConfigurationPostProcessor"/>
于 2015-05-07T12:02:14.570 に答える