你能帮我摆脱ApplicationContext吗?
我有一个工厂,所以所有的书实例都是 spring-beans。我认为把所有的豆子都做成春豆是一个很好的决定。
@Component
public class BookFactoryImpl implements BookFactory {
private final ApplicationContext applicationContext;
@Autowired
public BookFactoryImpl(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
@Override
public Book createBook(String name) {
return applicationContext.getBean(Book.class, name);
}
}
这是一个配置类,其@Bean方法用于实例化Book类的新实例:
@Configuration
@ComponentScan({"factory"})
public class AppConfig {
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Lazy
public Book book(String name) {
return Book.builder().name(name).build();
}
}
这是我的Book实体类:
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
@EqualsAndHashCode
@ToString
@Builder
public class Book {
@Id
@GeneratedValue
private int id;
@Basic(fetch = FetchType.LAZY)
private String name;
}
我有更多的一个想法-注释BookFactoryImpl与@Configuration和移动@Bean在它的方法,但在这种情况下,我厂将变成@Configuration类破碎的生命周期。
你怎么看,实现工厂的最佳方式是什么,以及如何减少外部依赖,比如ApplicationContext?
或者把所有的工厂都做成@Configuration带有@Bean方法的类是很好的,你怎么看?
蝴蝶刀刀
qq_花开花谢_0
相关分类