Я новичок в 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);
}
}
Квадратный класс:
@Component
public class Square extends AbstractShape {
@Override
public void draw() {
}
@Override
public int calculateArea(int x, int y) {
return x * y;
}
}
Мой класс конфигурации spring, который в основном создает для меня bean-определение:
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();
}
}
Я хочу, чтобы мое определение bean-компонента расширяло класс «AbstractShape», и не хочу предоставлять одно за другим определение bean-компонента в моем классе конфигурации. Пожалуйста, предложите возможные способы сделать это.
Заранее спасибо,
Приянк
Извините, я пропустил эту часть. Я уже аннотировал как @Component.




Аннотирование класса Circle и самого Square с помощью @Component намного проще для такой задачи.
Этот метод идентичен объявлению метода в классе @Configuration, как вы это делаете сейчас.
Вы можете попробовать аннотировать класс AbstractShape, я не знаю, работает ли он
Я уже пометил "Круг" и "Квадрат" как @Component. и аннотирование абстрактного класса - не лучшая идея. потому что вы не можете создать абстрактный класс.
Это было решено добавлением @ComponenetScan в конфигурацию.
Спасибо за ответы.
Я не уверен, правильно ли я понял, но почему вы не можете аннотировать Circle и Square как @Component?