SpringBoot2.X——常用注解

SpringBoot2.X-常用注解

1、javaConfig配置

@Configuration
public class MoonBookConfiguration {
    // 如果一个bean依赖另一个bean,则直接调用对应JavaConfig类中依赖bean的创建方法即可
    // 这里直接调用dependencyService()
    @Bean
    public BookService bookService() {
        return new BookServiceImpl(dependencyService());
    }
    @Bean
    public OtherService otherService() {
        return new OtherServiceImpl(dependencyService());
    }
    @Bean
    public DependencyService dependencyService() {
        return new DependencyServiceImpl();
    }
}

2. @ComponentScan

可以通过使用basePackages等属性来指定@ComponentScan自动扫描的范围,如果不指定,默认从声明@ComponentScan所在类的package进行扫描(当前包以及子包)。正因为这样,SpringBoot的启动类都默认推荐在src/main/java下。

3. @Import

@Import注解用于导入配置类,举个简单例子:现在还有一个配置类,比如MoonUserConfiguration,这个配置类中有一个bean依赖于MoonBookConfiguration中的bookService,那么如何将这两个bean组合在一起?借助@Import即可。

@Configuration
// 可以同时导入多个配置类,比如:@Import({A.class,B.class})
@Import(MoonBookConfiguration.class)
public class MoonUserConfiguration {
    @Bean
    public UserService userService(BookService bookService) {
        return new BookServiceImpl(bookService);
    }
}

注:在4.2之前,@Import注解只支持导入配置类。但是在4.2之后,它支持导入普通类,并将这个类作为一个bean的定义注册到IOC容器中。

4. @Value和@PropertySource(“classpath:jdbc.properties”)

@Value注解的作用就是讲配置文件中的属性读取出来,有@Value("${}")和@Value("#{}")两种方式。@PropertySource()注解一般用于来指定配置文件。

5. @ConfigurationProperties和@EnableConfigurationProperties

当某些属性的值需要配置时,我们一般会在application.properties文件中新建配置项,然后在bean中使用@Value注解来获取配置的值,但是@Value的可扩展性较差,因为在每个地方都要写上@Value(“xxx”),如果xxx字符串改变,每个地方都要改变。因此SpringBoot提供了更优雅的实现方式。那就是@ConfigurationProperties注解。

@Component
//  还可以通过@PropertySource("classpath:jdbc.properties")来指定配置文件
@ConfigurationProperties("jdbc.mysql")
// 前缀=jdbc.mysql,会在配置文件中寻找jdbc.mysql.*的配置项
pulic class JdbcConfig {
    public String url;
    public String username;
    public String password;
}
@Configuration
public class HikariDataSourceConfiguration {

    @AutoWired
    public JdbcConfig config;

    @Bean
    public HikariDataSource dataSource() {
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setJdbcUrl(config.url);
        hikariConfig.setUsername(config.username);
        hikariConfig.setPassword(config.password);
        // 省略部分代码
        return new HikariDataSource(hikariConfig);
    }
}

@EnableConfigurationProperties注解表示对@ConfigurationProperties的内嵌支持,默认会将对应的Properties Class作为JavaBean注入到IOC容器中,即在响应的Properties类上不用加@Component注解。
== IDEA 提示: Spring Boot Configuration Annotation Processor not fount in classpath解决方案:==

 
    org.springframework.boot 
    spring-boot-configuration-processor 
    true 

你可能感兴趣的:(SpringBoot)