2015-05-07 4 views
0

Мой класс конфигурации живучесть выглядит как ниже:Inject аннотации на основе Bean в XML на основе боба

@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 --> 

Так я хочу, чтобы ввести фасоль под названием "dataSource" аннотируется с @Bean (в классе конфигурации persistence), в <jdbc-user-service data-source-ref="dataSource" ... >, как я могу это сделать?

+0

Это зависит от того, как вы увеличиваете весну. Если вам удастся загрузить как класс '@ Configuration', так и xml-файл, он будет работать. Если это не так, покажите, как вы это делаете. –

+0

@SergeBallesta, я думаю, он должен быть загружен как классом @Configuration, так и xml-файлом, потому что я его настраиваю в моем XML-файле: '<контекст: компонент-сканирование base-package =" com.rsone. * "/> <контекст: annotation-config /> ' –

+0

Жесткая часть, начинающаяся с весны, заключается в правильной загрузке контекстов приложения. Если вы этого не скажете, я не смогу помочь. Как вы загружаете Spring? Из web.xml, из 'WebApplicationInitializer'? –

ответ

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> 
+0

Рад, что вы решили проблему, но признаете, что было трудно угадать нас :-) –

+0

Танки для вашей помощи, ребята;) –

0

попробовать это:

<bean class="PersistenceConfig.class"/> 

в вашем XML-конфигурации

наконечник: убедитесь, что у вас есть этот постпроцессор

<bean class="org.springframework.config.java.process.ConfigurationPostProcessor"/> 
+0

, который он дает me 'Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: бит bean с именем 'dataSource' не определен' –

+0

@AbelRoussi убедитесь, что у вас есть этот почтовый процессор – Jaiwo99

0

Это происходит потому, что вы загружаете конфигурации XML перед PersistenceConfig класса, который создает компонент «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 "> 
    <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 --> 
Смежные вопросы