【SpringBoot】常用注解

@EnableAutoConfiguration

启动自动装载:使用了这个注解之后,所有引入的jar的starters都会被自动注入。这个类的设计就是为starter工作的。

@RestController

这个注解专门用于写RESTful的接口的,里面集成了@Controller和@ResponseBody注解。
@ResponseBody 这个注解会自动利用默认的Jackson将return的对象序列化成json格式。

@RequestMapping 、@GetMapping、@PostMapping

这些注解主要是配置路由信息。

@Import、@ImportResource、@Configuration 、@PropertySources

@Configuration :标识当前类是一个Java配置类 。例如:MyBatisDataSourceConfig,对mybatis的datasource进行配置。

@Import:用于手动注入Java config类。

@Import({Dog.class, Cat.class})
public class MyTest {

    public static void main(String args[]){
        ConfigurableApplicationContext configurableApplicationContext = SpringApplication.run(MyTest.class, args);
       // System.out.println(configurableApplicationContext.getBean(Dog.class));
        Cat cat = configurableApplicationContext.getBean(Cat.class);
        cat.print();
    }
}

@ImportResource:用于注入XML配置类。
@PropertySources :用于注入properties的配置文件。
@ConfigurationProperties的作用和@Value类似,但是使用起来稍微麻烦,就不做讲解了。
(@ConfigurationProperties将application.yml中有的值自动复制到该Config类中同名的字段中。相当于driverClassName已经有值了。
@PropertySource读取到druid.properties文件,一定要通过@Value注入值,不然会为空。)

@Component
@ConfigurationProperties(prefix = "spring.datasource")
@PropertySource("classpath:druid.properties")
public class Config {

    private String driverClassName;
    private String url;
    private String username;
    private String password;

    //当druid.properties中对initialSize有配置,但是还是以@Value中的配置为准,@Value中的值会覆盖properties文件中的值。
    @Value(value = "5")
    private int initialSize;

    public int getInitialSize() {
        return initialSize;
    }

    public void setInitialSize(int initialSize) {
        this.initialSize = initialSize;
    }

    public String getDriverClassName() {
        return driverClassName;
    }

    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

@Value、 @ConfigurationProperties

@Value 这个注解会通过设定的key自动注入 properties文件里面配置的Property属性值。比如
@Value(“${test.name}”) 会自动引入properties文件里面配置的test.name的值。

查看自动加载的类:

@SpringBootApplication

@SpringBootApplication注解等价于以默认属性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 。

@ComponentScan

组件扫描,Springboot自动创建了一个启动类,如果在启动类同级目录及其子包下,则会自动扫描所有组件。如果不在,不然需要加扫描包路径。

自动扫描:@Repository、@Service、@Controller、@Component 组件。

@Repository、@Service、@Controller、@Component

组件的标注:在Annotaion配置注解中用@Component来表示一个通用注释用于说明一个类是一个Spring容器管理的类。即该类已经拉入到Spring的管理中了。而@Controller, @Service, @Repository是@Component的细化,这三个注解比@Component带有更多的语义,它们分别对应了控制层、服务层、持久层的类。

@Repository注解:用于标注数据访问组件,即DAO组件
@Service注解:用于标注业务层组件
@Controller注解:用于标注控制层组件(如struts中的action)
@Component注解:泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@Profile

这个注解主要加在@Component or @Configuration上面。标识当前profile环境。对于不同的环境可以可以选择是否加载这些配置。

然后在application.properties中选择环境,用逗号分隔。
spring.profiles.active=xxxx

@ServletComponentScan

@ServletComponentScan 注解加上后拦截器失效; 去掉后过滤器和监听器失效

@EnableCaching

开启Cache缓存支持;

@PathVariable:

路径变量。

@Conditional以及其元注解

@Conditional:满足特定条件创建一个Bean,SpringBoot就是利用这个特性进行自动配置的;

@ConditionalOnProperty:指定的属性是否有指定的值;

@ConditionalOnClass:当类路径下有指定类的条件下

@Autowired和@Resource

@Autowired :默认按照类型加载
@Resource: 默认按照bean的Name进行加载

不过上面两种都可以通过@qualifier 注解设置注入bean的Name

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值