每一年都奔走在自己热爱里

没有人是一座孤岛,总有谁爱着你

Spring学习笔记(二)-IOC基于注解

Spring学习笔记(二)-IOC基于注解

Spring配置文件配置
  • 配置组件扫描器

  • <context:component-scan base-package="com.Xxx">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    
  • 扫描com.Xxx下的所有注解但是不包括Controller注解

  • 扫描多个包:

    • 配置多个组件扫描器

    • 使用分隔符,分号或者逗号(;or,)

    • <context:component-scan base-package="com.Xxx.Xxx;com.Xxx.Xxx"/>
      
    • 指定父包

Component
  • 放置于类上,将该类放入容器

  • value即对应于id,在没有设置value时,默认给予的名称为类名首字母小写

  • @Repository:dao接口的注解

  • @Controller:controller控制器的注解

  • @Service:业务层的注解

  • 本质都为@Component,只是别名,便于分类标记

  • 属性赋值

    • 简单类型

      • @Value,放置于属性定义(不需要set方法)或set方法上

      • 读取外部属性配置文件

      • <context:property-placeholder location="classpath:JdbcDataSourceConfig.properties"/>
        
      • 此时@Value中的值可以设置为外部文件中的数据:${"key"},相似于EL表达式

    • 引用类型

      • @Autowired:由Spring提供的自动注入,默认为byType也支持byName,可以放置于属性(不需要set方法)或set方法上
        • required属性:默认为true,Spring此时会在启动创建容器时就检查是否注入成功,失败时会终止程序,报错。设置为false时即使自动注入失败也会正常秩序程序,此时引用类型的值为null
      • @Qualifer:从容器中寻找指定名称的对象,需要配合@Autowired使用
      • @Resource:JDK提供,在不提供参数时。默认采用byName方式注入,在byName注入不成功时byType,位置为属性或set方法上,jdk1.8以上版本没有该注解,配置name属性时只使用byName方式注入
posted @ 2020-12-09 13:17  雨下整夜~  阅读(91)  评论(0)    收藏  举报