当前位置: 首页 > 知识库问答 >
问题:

@import注释的用例是什么?

后易安
2023-03-14

批注类型配置

指示类声明一个或多个@bean方法,并可能由Spring容器处理以生成bean定义...

@configuration类可以使用@import注释组成,与Spring XML中的工作方式相同。因为@Configuration对象是作为容器中的Spring bean管理的。

public class ApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] { WebConfig.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }
    
 }
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "package.name" })
// @Import(OptionalConfig.class) 
public class WebConfig extends WebMvcConfigurerAdapter {
    // ...
}
@Configuration
public class OptionalConfig {
    
    @Bean(name = "myClass")
    public MyClass myClass() {
        return new MyClass();
    }
}
@Service
public class MyServiceImpl implements MyService {
    
    @Autowired
    private MyClass myClass;    // yes, it works

    // ...
}

共有1个答案

车峻熙
2023-03-14

到目前为止,我们已经了解了如何将bean定义分解为多个@configuration类,以及如何跨越@configuration边界引用这些bean。这些场景要求为JavaConfigApplicationContext的构造函数提供所有@configuration类,但这并不总是理想的。通常最好使用聚合方法,其中一个@configuration类逻辑地导入另一个定义的bean定义。

@import注释提供的正是这种支持,它是Spring beans XML文件中的 元素的直接等价物。

http://docs.spring.io/spring-javaconfig/docs/1.0.0.m4/reference/html/ch04s03.html

 类似资料:
  • 问题内容: 我有2个实体,如“父对子”和“一对多”关系 因此,这里 @LazyCollection(LazyCollectionOption.EXTRA)的 用途是什么,它将何时出现在图片中,例如对哪个带有子列表的操作有好处? 问题答案: 为了给您一个提示,主要是出于性能方面的考虑,您可以开始阅读以下链接: 二级缓存 休眠文档

  • 在我的项目代码库中,我看到许多地方使用了生成的注释。当我通读这些文件时,它说明了以下内容。 Lombok最终会自动将此注释添加到所有生成的构造函数、方法、字段和类型中。 根据文档,Lombok会自动为生成的代码添加注释。除此之外,不会生成任何像或这样的代码。我看不出使用它的理由。 我错过什么了吗?

  • 问题内容: 我的问题是非常基本的,为什么我们人们使用注释,此注释的重要性是什么? 在旧的JDK中,为什么它不显示为警告,但是在最新的JDK中,则需要“为什么..”? 问题答案: 假设您有: 您 确实 打算覆盖,但是由于签名中的错误,它不是这样做的。如果使用,则可以让编译器检测故障。它 还会 向任何 阅读 代码的人表明这将覆盖现有方法或实现接口-为他们提供有关当前行为以及重命名该方法可能产生的影响的

  • 问题内容: 使用这些批注的重点是要独立于数据库提供程序,而不是重新生成JAR存档。 如果我坚持不懈,那么我首先看不到使用hibernate的意义。如果确实决定切换到其他数据库提供程序,则必须修改类中的注释,然后重新编译应用程序。 问题答案: @Table 批注:@Table批注允许您指定用于将实体保留在数据库中的表的详细信息。 @Table批注提供了四个属性,使您可以覆盖表的名称,目录和架构,并对

  • 问题内容: Hibernate文档具有以下有关注释的信息: 在纯Java API中,未定义时间的时间精度。处理时态数据时,您可能需要描述数据库中的预期精度。时间数据可以具有DATE,TIME或TIMESTAMP精度(即实际日期,仅时间或两者兼有)。使用@Temporal批注进行微调。 什么意思 什么是数据及其精度?如何调整? 问题答案: 必须为类型为和的持久字段或属性指定此注释。只能为这些类型的字

  • Hibernate文档包含以下注释的信息: 在普通的JavaAPI中,时间的时间精度没有定义。在处理时态数据时,可能需要描述数据库中的预期精度。时态数据可以具有日期、时间或时间戳精度(即实际日期、仅时间或两者)。使用@Temporal注释对其进行微调。 是什么意思?什么是数据及其精度?它如何微调?