2013-07-15 4 views
4

Привет Я относительно новичок в весне. Я использую аннотации. Мои сомнения начинаются у меня есть класс , какSpring @Autowired и bean декларация в applicationContext.xml

public class MyClassA{ 

@Autowired 
private MyClassB variableClassB; 

// more code here 
. 
. 
. 

в моем applicationContext.xml

<context:component-scan base-package="package containing MyClassB" /> 

Мой вопрос существо мне нужно, чтобы добавить объявление боба в applicationContext.xml следующим

<bean id="classB" class="com.MyClassB" 

или достаточно, чтобы иметь @Автоматизированную аннотацию

ответ

6

Нет, это не так.

Если MyClassB помечается с аннотациями как @Component, @Service, @Repository или @Controller сканирование компонента создаст компонент для класса в фасоли завода.

Если вы не используете какой-либо из этих аннотаций то, что вам нужно, чтобы создать компонент вручную, как вы дали

Ex:

@Component 
public class MyClassB{ 
} 
+0

NO У меня нет ни одной из этих аннотаций. Это просто класс POJO. Поэтому, я думаю, мне нужно определить bean-компонент в applicationContext.xml. Правильно? – Aditya

+0

@Aditya да вам нужно –

+0

Спасибо Arun ... :) – Aditya

1

Если у вас есть аннотация @Component на MyClassB, не нужно добавлять <bean id="classB" class="com.MyClassB" в applicationContext.xml. В противном случае, необходимо.

1

Вся цель @Autowired аннотацию просто избежать явно указывая компонент в файле xml. Ведение

<context:component-scan base-package="package containing MyClassB" />

проверяет пакет и ищет аннотации @Controller, @Service, @Repository и т.д., и делает сам боб.

+0

NO У меня нет ни одной из этих аннотаций. Это просто класс POJO. Итак, мне нужно определить bean-компонент в applicationContext.xml? – Aditya

1

@Autowired аннотаций позволяет избежать необходимости явно указать необходимость MyClassB в XML-декларации MyClassA, но это не значит, что MyClassBбоб создается автоматически. Если вы вообще не хотите, чтобы MyClassB появился в XML, вам нужно сделать context:component-scan, чтобы найти @Bean (и полученные) аннотации. (Сканирование довольно дорогое, поэтому вам нужно просить об этом явно.)

Смежные вопросы