Spring常用注解大全

@Configuration

从spring3.0开始出现,相当于配置bean的xml文件,使用该注解可以实现基于java类的配置(其他两种方式可以参考这篇文章:Spring总结(二) 如何配置元数据——将bean注入到Spring容器中)。

源码如下:

被该注解标志的类会创建一个对象,注入到IOC容器中。

简单使用:

package spring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import entity.Person;

@Configuration
public class Config {
  @Bean
  public Person person() {
    return new Person(18,"dreamcasher");
  }

  public static void main(String[] args) {
    //创建IOC容器,并将实例创建后注入到容器中
    ApplicationContext app = new AnnotationConfigApplicationContext(Config.class);
    Object person = app.getBean("person");
    System.out.println(person);
  }
}

运行结果

@ComponentScan

根据自定义扫描包的路径,将该路径下的被@Component、@Controller、@Service、@Repository注解的类注入到spring容器中。

ps:这里记录一个使用时遇到的坑,注解中有这用一个属性useDefaultFilters,默认值为true,如果值为true,那么在扫描的时候一定会将诸如@Controller、@Service、@Repository注解的类注入到spring容器中,所以一般来说,如果要用到includeFilters属性时,useDefaultFilters应该设置为false。

@Lazy

spring容器在启动的过程中会创建非懒加载的单例,@Lazy注解的类不会在spring容器启动的过程中创建,而是在被get的时候被创建。

@Scope

可以设置该bean是单例(singleton)还是多例(prototype),默认是单例

@Conditional

满足某总条件后,才会将该bean注入到容器中。查看原码如下:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface Conditional {
    Class<? extends Condition>[] value();
}

传入的类对象需要实现Condition接口

@Import

可以将传入的类对象注入到容器中,类型没有限制,比如classes文件下的类,第三方包中的类,或者实现了ImportBEANDefinitionRegistrar接口的类

@Autowired @Qualifier @Resource @Primary 

使用可以参考文章:@Resource与@Autowired 比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值