Spring注解

Spring注解

下面描述Spring Boot注解,自己学习,仅供参考
只有在容器中的组件才会拥有SpringBoot的功能


@ConfigurationProperties(prefix = "xxx")为yml文件配置方式 @PropertySource(value="classpath:地址") 为properties文件配置方式

使用yml配置的方式:

@ConfigurationProperties(prefix = “person”) 配置绑定

1.定义一个Person对象,使用@Component将该对象添加到容器中;
2.@ConfigurationProperties(prefix = “person”)这个注解指定yml文件中的person方法(推荐)。

                                 person对象(下图)
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> list;
    private Dog dog;
}

3.我们在测试类使用@Autowired自动装配person对象

                                     测试类 (下图)
@SpringBootTest
class DemoApplicationTests {
    @Autowired
    private Person person;
    @Test
    void contextLoads() {
        System.out.println(person);
    }

4 . 设置好属性值

                                      yml文件(下图)
person:
  name: zoutao
  age: 2
  happy: true
  birth: 2020/03/03
  maps: {k : k1,i : i1}
  list:
    -code
    -music
    -girl

使用properties配置的方式:

@PropertySource(value = “classpath:test.properties”)

加载指定配置文件(不推荐使用)
                                   person类(下图)
@PropertySource(value = "classpath:test.properties")
public class Person {
    private String name;
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> list;
    private Dog dog;
}
                                     测试类 (下图)
@SpringBootTest
class DemoApplicationTests {
    @Autowired
    private Person person;
    @Test
    void contextLoads() {
        System.out.println(person);
    }
                               application.properties (必须为这个名字)
person.name=tom
person.age=2


JSR303验证

@Validated 数据校验

使用下面验证方式必须写 @Validated

i图片来源于网络


底层注解

@Configuration(proxyBeanMethods = true)

包含参数 proxyBeanMethods默认为true(可不写proxyBeanMethods),true是为单实例模式,false时会每调用一次组件创建一个对象;为什么有true或false的选择(解决组件依赖)。
@Data
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class Dog {
    private String name;
    private Integer age;
}

@Bean注入

run.getBean(name,xx.class)获取组件 run.containsBean(组件名) 测试是否存在该组件
@Configuration  //告诉SpringBoot这是一个配置类
public class MyConfig {
    @Bean
    //给容器中添加组件,以方法名作为组件的id
    //返回类型就是组件的类型,返回的值就是组件在容器中的实例
    public Dog dog(){
        return new Dog("ls",2);
    }
}

主程序测试

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.example.demo")
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
        ConfigurableApplicationContext run = SpringApplication.run(DemoApplication.class);
        String[] Names = run.getBeanDefinitionNames();
        for(String name : Names){
            System.out.println(name);
        }
    }
}

@Import() 导入

给容器中自动创建导入类的组件,可导入多个用 { } 包起来。
//在容器中自动创建两个类型的组件
@Import( { Dog.class , Person.class } )
//在容器中获取所有Bean
String  beanNamesForType = run.getBeanNamesForType(Dog.class);
//打印出组件
for(String s : beanNamesForType ){
System.out.println(s);
}

@Conditional条件装配

满足Conditional的指定条件,则进行组件注入
@ConditionalOnBean //仅仅在当前上下文中存在某个对象时,才会实例化一个Bean。
@ConditionalOnClass//某个class位于类路径上,才会实例化一个Bean。
@ConditionalOnExpression//当表达式为true的时候,才会实例化一个Bean。
@ConditionalOnMissingBean//仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean。
@ConditionalOnMissingClass//某个class类路径上不存在的时候,才会实例化一个Bean。
@ConditionalOnNotWebApplication//不是web应用,才会实例化一个Bean。
@ConditionalOnBean//当容器中有指定Bean的条件下进行实例化。
@ConditionalOnMissingBean//当容器里没有指定Bean的条件下进行实例化。
@ConditionalOnClass//当classpath类路径下有指定类的条件下进行实例化。
@ConditionalOnMissingClass//当类路径下没有指定类的条件下进行实例化。
@ConditionalOnWebApplication//当项目是一个Web项目时进行实例化。
@ConditionalOnNotWebApplication//当项目不是一个Web项目时进行实例化。
@ConditionalOnProperty//当指定的属性有指定的值时进行实例化。
@ConditionalOnExpression//基于SpEL表达式的条件判断。
@ConditionalOnJava//当JVM版本为指定的版本范围时触发实例化。
@ConditionalOnResource//当类路径下有指定的资源时触发实例化。
@ConditionalOnJndi//在JNDI存在的条件下触发实例化。
@ConditionalOnSingleCandidate//当指定的Bean在容器中只有一个,或者有多个但是指定了首选的Bean时触发实例化。

@ImportResource(“classpath:文件名.xml”)

导入spring的配置文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值