Как обеспечить определение единого компонента для всех дочерних классов в весенней конфигурации? - PullRequest
0 голосов
/ 15 ноября 2018

Я новичок в Spring и изучаю его. Я хочу, чтобы мой контейнер Spring создавал все объекты из определенного пакета.

Класс круга:

@Component
public class Circle extends AbstractShape  {

@Override
public void draw() {

}

@Override
public int calculateArea(int x, int y) {
    return (int) (3.14 * x * y);
}

}

Square Class:

@Component
public class Square extends AbstractShape {
    @Override
    public void draw() {

    }

    @Override
    public int calculateArea(int x, int y) {
        return x * y;
    }
}

Мой весенний конфигурационный класс, который в основном создает для меня определение бина:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ShapeConfig {

    @Bean
    public Circle getCircle() {
        return new Circle();
    }

    @Bean
    public Square getSquare() {
        return new Square();
    }
}

Я хочу, чтобы было создано мое определение бина, которое расширяет класс "AbstractShape",и хочу избежать предоставления по одному определению компонента в моем классе конфигурации.Пожалуйста, предложите возможные способы сделать это.

Заранее спасибо,

Приянк

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Это было решено добавлением @ComponenetScan при настройке.

Спасибо за ваши ответы.

0 голосов
/ 15 ноября 2018

Обозначить класс Circle и Square сам с помощью @Component намного проще для такой задачи, как эта.

Этот метод идентичен объявлению метода в классе @Configuration,Вы делаете сейчас.

Вы можете попытаться аннотировать класс AbstractShape, я не знаю по макушке, работает ли он

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...