注解系列——常用注解

Bean声明

  • @Controller
    用于标注控制层组件

  • @Service
    用于标注业务层组件

  • @Repository
    用于标注数据访问组件,即DAO组件。

  • @Component
    泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注


Bean注入

  • @Autowired
    默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。
    允许null 值,可以设置它的required属性为false

  • @Autowired @Qualifier(“personDaoBean”)
    存在多个实例配合使用,指定装配名为 personDaoBean 的Bean

  • @Resource
    默认按名称装配,当找不到与名称匹配的bean才会按类型装配。

  • @Primary
    自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常

// 抛出异常
org.springframework.beans.factory.NoUniqueBeanDefinitionException

// 方案1-@Qualifier
使用Qualifier注解,选择一个对象的名称,通常比较常用

// 方案2-@Primary
Primary可以理解为默认优先选择,同时不可以同时设置多个,
内部实质是设置BeanDefinition的primary属性

配置类

  • ComponentScan
    扫描带有 @Configuration @Component @Repository @Service @Controller注解的类 到Spring容器
    其中base-package为需要扫描的包(含子包)
    不指定扫描路径时,则默认使用当前类所在的包路径

  • ComponentScans
    集成多个 ComponentScan

  • @Configuration
    把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。

  • @Bean
    使用该注解的方法产生一个被spring 容器管理的Bean
    beanName默认使用 方法名,也可以使用value属性或者name属性显式指定 一个或者多个别称
    常用在标有@Configuration注解的类的方法上
    对应的classes 和 methods 不可是 final 或者 private


Bean构造和销毁

  • @PostConstruct
    用于指定初始化方法(用在方法上)
    在构造方法和init方法(如果有的话)之间得到调用,且只会执行一次。
    Constructor > @PostConstruct >InitializingBean > init-method

  • @PreDestory
    用于指定销毁方法(用在方法上)
    注解的方法在destory()方法调用后得到执行。

  • @DependsOn
    定义Bean初始化及销毁时的顺序,
    在初始化当前Bean之前,显式地初始化被依赖的Bean
    用在直接或者间接使用@Component注解的类上 或者
    用在@Bean 的方法上


属性注入

  • @Value
    为字段、方法参数的属性赋值
    从properties里取配置,即使给变量赋了初值也会以配置文件的值为准。

    注入普通字符
    @Value(“Michael Jackson”)String name;

    注入配置文件
    Value("${book.name}")String bookName;

    注入操作系统属性
    @Value("#{systemProperties[‘os.name’]}")String osName;
    @Value("#{systemProperties.myProp}")String myProp;

    注入表达式结果
    @Value("#{ T(java.lang.Math).random() * 100 }") String randomNumber;

    注入其它bean属性
    @Value("#{domeClass.name}")String name;

    注入文件资源
    @Value(“classpath:com/hgs/hello/test.txt”)String Resource file;

    注入网站资源
    @Value(“http://www.cznovel.com”)Resource url;


其他

  • @Async
    异步方法调用
    用在方法上 或者
    用在类上,则类的所有方法都是异步的
    方法返回值类型为 void 或者 Future
    需要@EnableAsync开启异步任务

  • @Scope
    用于指定scope作用域的(用在类上)

  • @Lazy
    用于指定该Bean是否取消预初始化,用于注解类,表示延迟初始化。
    用在直接或者间接使用@Component注解的类上 或者
    用在@Bean 的方法上


Reference

  • https://blog.csdn.net/qq_16055765/article/details/78833260
  • https://www.cnblogs.com/xiaoxi/p/5935009.html
  • https://juejin.im/entry/5ad3fda5f265da238d512a98

你可能感兴趣的:(Java,Spring)