admin管理员组

文章数量:1794759

SpringBoot常用注解大全

SpringBoot常用注解大全

SpringBoot常用注解大全 前言

分析其注解中源码构成,弄明白每一个注解的含义

一、常用注解 1.@Configuration

SpringBoot其配置核心也就是这个配置类,这时我们应该回忆一下Spring的IOC的概念 什么是IOD?:顾名思义就是我们常说的控制反转 那什么又是控制反转呢: 控制:传统程序我们一般都是应用到new对象的方式创建对象,但我们使用Spring后,对象都又Spring替我们创建。 反转:程序本沈不创建对象,由主动变成变为被动接收。

  • IOC的创建对象的方式分为无参构造器的方式。
  • setter注入的方式。
  • 有参构造器的方式 之后我们介绍@Configuration 下面看一个例子
  • package com.example.bean; public class Cat { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Cat{" + "name='" + name + '\\'' + ", age=" + age + '}'; } public Cat(String name, Integer age) { this.name = name; this.age = age; } }

    创建一个猫类

    package com.example.config; import com.example.bean.Cat; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class myconfig { @Bean public Cat mycat(){ return new Cat("niu",23); } }

    进入Configuration的源码会发现其实它也是spring容器中的一个组件 @Bean代表将将对象以id为myconfig的对象注入到spring容器中,而return new Cat(“niu”,23);相当于以有参构造器的形式注入。

    • 下面分析一下@Bean注入是否为单实例对象
    ConfigurableApplicationContext run = SpringApplication.run(SpringbootAtuoconfigApplication.class, args); myconfig bean = run.getBean(myconfig.class); Cat mycat = bean.mycat(); Cat mycat1 = bean.mycat(); System.out.println(mycat==mycat1);

    由实验得出bean注入的对象是单实例对象,它不会重复创建多次组件 这是为什么呢? 因为@Configuration有一个配置项

    boolean proxyBeanMethods() default true;

    这个就代表将组件myconfig默认配置成代理对象 如果我们将

    @Configuration(proxyBeanMethods = false)

    那么他就会变为普通对象将会创建两个不同的组件

    2.@Import

    @import一般都放在配置类上

    @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Import { Class<?>[] value(); }

    其中只有只有一个配置参数,@Import(value = {DBHelper.class})将DBHelper组件注入到容器中。

    3.@Conditional

    排除一些组件,他其中有许多子类注解 F4查看一下 这是 其中ConditionalOnBean意思为容器中是否有该组件,有则执行配置文件,没有则不执行。

    @ImportResource

    @ImportResource(value = “classpath:bean.xml”)就是将外部配置的xml的bean注入到spring 容器之中

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="www.springframework/schema/beans" xmlns:xsi="www.w3/2001/XMLSchema-instance" xsi:schemaLocation="www.springframework/schema/beans www.springframework/schema/beans/spring-beans.xsd"> <beans> <bean id="cat" class="com.example.bean.Cat"> <property name="name" value="liu"></property> <property name="age" value="21"></property> </bean> </beans> </beans> @ConfigurationProperties

    这个注解是将配置文件属性和实体类属性相连接 @ConfigurationProperties(“mycat”)

    mycat.name=shui mycat.age=21

    这是常用注解用于分析源码,之后还会总结

    本文标签: 注解常用大全SpringBoot