跟注解相关的标签

通过注解我们可以实现零配置,但是也可以随便配置点东西。

  • <context:annotation-config/>//开启注解模式 spring默认是开启注解的,所以这个标签没啥用
  • <context:component-scan base-package=""/> 配置注解扫描器,扫描给定包下所有类及子孙包中的类

    • 需要配置扫描器告诉spring它需要去找注解来进行工作。

      注解的介绍

  • @Component

    • 参数value,值是bean的id
    • 不给参数时,默认value=类名首字母小写
    • 定义在实现类上面,表示当前类是一个spring元素,相当于xml中一个bean标签
  • @Autowired

    • 定义在属性名上面,表示自动注入值,默认byType
    • 设置不需要set方法,也可以注入
    • 当容器中没有对应类型的元素时,会报错
    • 当有多个类型的元素时,也会报错
    • 使用@Qualifier指定要注入元素的beanName
    • 使用@Primary也可以,用于需要注入时,首选,定义在类的上面
    • @Resource(name=””),属性注入,默认按照byName注入
      1. @Autowired
      2. @Qualifier(beanName)
      3. private Dao bean;
  • @Configuration

    • 定义在类上面,表示这个类是一个配置类(相当于是一个applicationContext.xml,spring会解析)。
    • 可以在配置类中使用其他注解来配置。
  • @ComponentScan
    • 参数basePackages,参数值包名
    • 参数useDefaultFilters,默认true,不用配置,表示spring的默认扫描过滤器
    • 定义在配置类上面,用来配置spring扫描包。和context:component-scan作用一样
  • @ComponentScans
    • 配置多个扫描包
    • 格式:@ComponentScans(value={@ComponentScan(“”),@ComponentScan(“”)})
  • 与@Component作用一模一样的注解
    • @Controller,控制器层
    • @Service,业务层
    • @Repository,持久化层
  • @Scope
    • 作用域,表示单例模式还是多例
    • 参数:
      • ConfigurableBeanFactory.SCOPE_SINGLETON(单利)
      • ConfigurableBeanFactory.SCOPE_PROTOTYPE(多例)
      • WebApplicationContext.SCOPE_SESSION(会话范围)
      • WebApplicationContext.SCOPE_REQUEST(请求范围)
  • @PostConstruct
    • 表示配置文件中的init-method,初始化方法
  • @PreDestroy
    • 表示配置文件中的destroy-method,销毁时方法
  • @Layz
    • 表示延迟加载。定义在类上

@Bean的使用

  • @Bean(initMethod="init",destroyMethod="destroy")
    1. @Configuration //表示是一个配置类 类似于一个xml配置文件
    2. public class ReisConfig {
    3. @Bean //类似于配置文件中的 <bean ...>
    4. public RedisProperties redisProps(){
    5. RedisProperties redisProperties = new RedisProperties();
    6. redisProperties.setHost("192.168.37.133");
    7. redisProperties.setPort(6379);
    8. return redisProperties;
    9. }
    10. }