powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring autowire @Component
10 сообщений из 10, страница 1 из 1
Spring autowire @Component
    #38676057
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день! Возникла проблема такого рода: необходимо заавтовайрить поле в бин, определённый в xml конфиге, причём само поле представляет из себя класс аннотированный @Component. Насколько я понимаю, контекст об эти "компонентах" ничего не знает, и получить их, соответственно, никак не может.
Подскажите какое-нибудь решение окромя определения второго бина в xml, сам найти ничего не смог путнего.
...
Рейтинг: 0 / 0
Spring autowire @Component
    #38676081
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вызови context.getBean("DoSOfRedRiverComponent") и мы узнаем видит ли контекст твои компоненты или нет.
...
Рейтинг: 0 / 0
Spring autowire @Component
    #38676090
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Неа. Не видит. Странная фигня вообще. Вот конфиги:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
<?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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd



        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">


    <context:annotation-config />

    <context:component-scan base-package="smsservice.controller, smsservice.core.process,
                                            smsservice.core.request, smsservice.core" />

	<mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper" ref="guavaObjectMapper" />
            </bean>
        </mvc:message-converters>
	</mvc:annotation-driven>

	<bean id="envPlaceholder"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:sms.properties</value>
			</list>
		</property>
		<property name="fileEncoding" value="UTF-8" />
		<property name="systemPropertiesModeName">
			<value>SYSTEM_PROPERTIES_MODE_OVERRIDE</value>
		</property>
	</bean>

    <task:scheduled-tasks>
        <task:scheduled ref="manager" method="scheduledTask" fixed-rate="10000"/>
    </task:scheduled-tasks>

</beans>



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
<?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:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd




        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">




    <!--<context:property-placeholder/> -->

    <!-- bean definitions here -->

    <bean name="guavaObjectMapper" class="smsservice.core.process.GuavaObjectMapper"/>

    <bean name="manager" class="smsservice.core.InternalManager">
        <constructor-arg value="val1"/>
        <constructor-arg value="val2"/>
        <constructor-arg value="val3"/>
        <constructor-arg value="val3"/>
    </bean>

</beans>



В InternalManager это так выглядит:

public class InternalManager {
@Autowired private RequestProcessor processor;

....
...
Рейтинг: 0 / 0
Spring autowire @Component
    #38676125
organism
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoSOfRedRivermayton,

Неа. Не видит. Странная фигня вообще. Вот конфиги:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
<?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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd



        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">


    <context:annotation-config />

    <context:component-scan base-package="smsservice.controller, smsservice.core.process,
                                            smsservice.core.request, smsservice.core" />

	<mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper" ref="guavaObjectMapper" />
            </bean>
        </mvc:message-converters>
	</mvc:annotation-driven>

	<bean id="envPlaceholder"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:sms.properties</value>
			</list>
		</property>
		<property name="fileEncoding" value="UTF-8" />
		<property name="systemPropertiesModeName">
			<value>SYSTEM_PROPERTIES_MODE_OVERRIDE</value>
		</property>
	</bean>

    <task:scheduled-tasks>
        <task:scheduled ref="manager" method="scheduledTask" fixed-rate="10000"/>
    </task:scheduled-tasks>

</beans>



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
<?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:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd




        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">




    <!--<context:property-placeholder/> -->

    <!-- bean definitions here -->

    <bean name="guavaObjectMapper" class="smsservice.core.process.GuavaObjectMapper"/>

    <bean name="manager" class="smsservice.core.InternalManager">
        <constructor-arg value="val1"/>
        <constructor-arg value="val2"/>
        <constructor-arg value="val3"/>
        <constructor-arg value="val3"/>
    </bean>

</beans>



В InternalManager это так выглядит:

public class InternalManager {
@Autowired private RequestProcessor processor;

....

Покажите, как вы спрингу указываете, где лежат ваши xml конфиги.
...
Рейтинг: 0 / 0
Spring autowire @Component
    #38676310
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
organism,

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:/META-INF/app-kernel.xml</param-value>
	</context-param>

	<!-- Loads the Spring web application context -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- Spring servlets -->
	<servlet>
		<servlet-name>spring</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:/META-INF/servlet.xml</param-value>
		</init-param>
		<load-on-startup>0</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>spring</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>

...
Рейтинг: 0 / 0
Spring autowire @Component
    #38676831
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoSOfRedRiverДобрый день! Возникла проблема такого рода: необходимо заавтовайрить поле в бин, определённый в xml конфиге, причём само поле представляет из себя класс аннотированный @Component. Насколько я понимаю, контекст об эти "компонентах" ничего не знает, и получить их, соответственно, никак не может.
Подскажите какое-нибудь решение окромя определения второго бина в xml, сам найти ничего не смог путнего.

Посмотри стектрейс.
Возможно spring не может выбрать бин.
Т.к. у вас два раза описан бин, ч/з .xml и ч/з аннотацию.

Такая проблема решается ч\з конструкцию:

@Qualifier("MyBeanID")
@Autowired
private MyBeanClass myBean;

где "MyBeanID" id бина заданый в .xml
...
Рейтинг: 0 / 0
Spring autowire @Component
    #38677963
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,

В том то и суть, что выбрать он его может. Сам бин, в который мне нужно поле заинжектить, описан в XML, и аннотаций над собой не имеет (лишь @autowire над полем). Но, как я понял, оно заинжектится не может, потому-что описано через @Component. Как-то так. Если попытаться описать поле-бин в XML, и выбирать через @Qualifier, то это по сути разные бины будут с разным состояние. А мне надо чтоб оно всё будто-бы в одном контексте работало. Вот.
...
Рейтинг: 0 / 0
Spring autowire @Component
    #38678027
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoSOfRedRivermad_nazgul,

В том то и суть, что выбрать он его может. Сам бин, в который мне нужно поле заинжектить, описан в XML, и аннотаций над собой не имеет (лишь @autowire над полем). Но, как я понял, оно заинжектится не может, потому-что описано через @Component. Как-то так. Если попытаться описать поле-бин в XML, и выбирать через @Qualifier, то это по сути разные бины будут с разным состояние. А мне надо чтоб оно всё будто-бы в одном контексте работало. Вот.

Тогда либо шашечки, либо ехать. :-)

Т.е. оставьте одно описание бина.
Либо ч/з аннотацию, либо ч/з XML.

А так у вас есть 2 одинаковых бина и Spring не знает какой вам нужен.
Вы либо говорите конкретно какой вам нужен, ч/з @Qualifier.
Либо "должен остаться только один". :-)
...
Рейтинг: 0 / 0
Spring autowire @Component
    #38678903
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,

Дак у меня он и остался в XML. Проблема в том, что другой бин через @Component работает, потому и не инжектится.
...
Рейтинг: 0 / 0
Spring autowire @Component
    #38685862
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблему решил. Дело в том, что rootContext не может видеть бины из webContext, соответственно и заинжектить тоже.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring autowire @Component
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]