栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring及SpringBoot常用注解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring及SpringBoot常用注解

1.@Scope:设置组件的作用域
@Configuration
@import({Colour.class, Red.class,MyimportSelector.class,MyimportBeanDefinitionRegistrar.class})
public class MainConfig {


    
    @Scope("prototype")
    @Bean
    public Person person(){
        System.out.println("person对象的创建过程..............");
        return new Person("nieyp","24");
    }
}
2.@Lazy:是否懒加载
@Configuration
public class MainConfig {
    
    @Lazy
    @Bean
    public Person person(){
        System.out.println("person对象的创建过程..............");
        return new Person("nieyp","24");
    }
}
3.@AutoWired
//例1
public class Person {
    private String name;
    private String age;
    private City city;
    public City getCity() {
        return city;
    }
    @Autowired
    //标注在方法上,Spring容器创建当前对象,就会调用方法,完成赋值
    //方法使用的参数,自定义类型的从IOC容器中获取(标注在有参构造上上同理(如果只有一个有参构造器,@AutoWired可以省略),也可以直接放在参数位置)
    public void setCity(City city) {
        this.city = city;
    }
}

//例2(前提是car和student已经注册到了Ioc容器中)
@Bean
    public Person1 person1(Car car, Student student){
        return new Person1(car,student);
    }
4.Bean的初始化和销毁
    
5.@import
@Configuration
@import({Colour.class, Red.class,MyimportSelector.class,MyimportBeanDefinitionRegistrar.class})
public class MainConfig {


    
}


public class MyimportSelector implements importSelector {
    @Override
    public String[] selectimports(Annotationmetadata importingClassmetadata) {
        System.out.println(importingClassmetadata.getAnnotations());
        System.out.println(importingClassmetadata.getAnnotations());
        return new String[0];
    }
}



public class MyimportBeanDefinitionRegistrar implements importBeanDefinitionRegistrar {
    @Override
    public void registerBeanDefinitions(Annotationmetadata importingClassmetadata, BeanDefinitionRegistry registry) {
        RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(RainBow.class);
        registry.registerBeanDefinition("rainBow",rootBeanDefinition);
    }
}
6.@ConfigurationPropertie+@Component

@ConfigurationProperties:通常是用来将properties和yml配置文件属性转换为bean对象使用,有一个prefix属性:需要指定配置文件中某些属性的前缀,会自动匹配到bean对象的某些属性上面.结合@Component将转换后的bean对象放入Ioc容器中

@Component
@ConfigurationProperties(prefix = "nieyp.blog")
public class ConfigBean {
    private String cource;
    private String name;
    set/get+tostring
}


application.yml:
        nieyp.blog.cource:springBoot
        nieyp.blog.name:blog



@RestController
public class TestController {

   
    @Autowired
    ConfigBean configBean;

    @GetMapping("/getMessage")
    public void getMessage() {
        System.out.println(configBean.toString());
    }
}
7.@EnableConfigurationProperties

@EnableConfigurationProperties在文档中解释 :当@EnableConfigurationProperties注解应用到你的@Configuration时,任何被@ConfigurationProperties注解的beans将自动被Environment属性配置 .这种风格的配置特别适合与SpringApplication的外部YAML配置进行配合使用。(@EnableConfigurationProperties 相当于把使用 @ConfigurationProperties 的类进行了一次注入.)

//将@ConfigurationProperties标注的类注册到BeafFactory
@EnableConfigurationProperties
@Configuration
public class PersonConfiguraiton {
}
8.@Value
public class Student {
    

    @Value("123123")
    private String name;
    //@Value("#{20-3}")
    @Value("123123")
    private String age;
    @Value("${person.nickName}")
    private String nickName;
}

@PropertySource(value = {"classpath:/person.properties"})
@Configuration
public class MainConfigOfPropertyValue {
    @Bean
    public Student student(){
        return new Student();
    }
}
9.@Profile:指定组件在哪个环境的情况下才能被注册到容器中
    加了环境标志的bean或者配置类,只有这个环境被激活的时候才能被注册到容器中,默认是default环境没有标注任何环境的Bean在任何环境下都是加载的
@Configuration
public class MainConfigOfProfile {

    @Profile("test")
    @Bean
    public DataSource dataSourceTest(){
        return new DataSource("test");
    }

    @Profile("dev")
    @Bean
    public DataSource dataSourceDev(){
        return new DataSource("dev");
    }

    @Profile("pro")
    @Bean
    public DataSource dataSourcePro(){
        return new DataSource("pro");
    }
}

切换不同化境:     

1.使用命令行动态参数(VM arguments): -Dspring.profiles.active=xxxx

2.通过代码       

AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(); applicationContext.getEnvironment().setActiveProfiles("xxxx"); applicationContext.register(xxxx.class); applicationContext.refresh();

10.@ComponentScan:在Springboot项目中可以重新指定要扫描的包以及排除的某些
//@SpringBootApplication(exclude = {Controller.class, Service.class})
//@ComponentScan(basePackages = {"com.xx.xx.*"}, excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {Controller.class}))
@SpringBootApplication
@ComponentScan(basePackages = {"com.hjj"})
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

   

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777354.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号