spring框架基础总结(二)

IOC操作bean管理

        xml自动装配

        根据指定装配规则(属性名称<id> 或者属性类型<class>),spring自动将匹配的属性植入,实现自动装配

        通过标签属性autowired 可设置byName 或者byType,属性为其他对象时就可设置,byName是根据对象名id去匹配,byType则是根据对象的类型去和class匹配,当然都要满足bean的唯一性,否则报错。

例如:有学生对象和班级,每个学生都归属一个班级

那么在配置文件中就可给学生设置autowired,去匹配班级对象。

 

 其中byName就找班级对象的id为grade,学生属性中Grade对象名为grade,两者匹配就会自动装配,byType就会找班级对象的class属性,如果和学生属性中Grade对象为同一类,依旧会自动装配,当然如果匹配到多个,那么就会报错。只有当匹配唯一时,才能自动装配。

注意:autowired也可做注解,用法和其一样,默认为匹配类型

  • 1、引入外部properties文件
    • 配置文件中:<context:property-placeholder location="druid.properties" ></context:property-placeholder>
    • 同过${key} 就可以获取对应的值

 2、注解

  • 配置扫描的基准包,

    • 不包含某个注解
      • 例如不扫描Controller层

    • 包含某个注解

    • use-default-filters 属性的默认值为 true,即使用默认的 Filter 进行包扫描,而默认的 Filter 对标有 @Service,@Controller和@Repository 的注解的类进行扫描,如果我们希望 Spring只扫描 @Controllerce 注解标注的类,不希望它扫描其余注解标注的类,那么设置了 use-default-filters 为 false,并使用 context:include-filter 子标签设置其只扫描带有 @Controller 注解标注的类。
    • 如果我们希望 Spring 只扫描不带有 @Controller 注解标注的类,而扫描其他注解标注的类,而这时建立在使用默认的 Filter 进行扫描的基础上,设置了 context:exclude-filter 标签,不扫描 @Controller 注解标注的类,所以不应该设置 use-default-filters 为 false,不然会报错。
    • 总结
      • 在使用 use-default-filters 属性时要分清楚需要扫描哪些包,是不是需要使用默认的 Filter 进行扫描。即 use-default-filters="false" 需要和 context:include-filter 一起使用,而不能和 context:exclude-filter 属性一起使用。

 

  • 加入注解
    • 持久层dao @Repository
    • 业务层service @Service
    • 控制层 action @Controller
    • 一般类 @Conponet
    • 管理Bean 的默认名字是类名首字母小写,注解中有value属性可以重起名字,不起则默认名

    • 自动注入
      • @autowired  不能指定
        • 这里@Autowired注解的意思就是,当Spring发现@Autowired注解时,将自动在代码上下文中找到和其匹配(默认是类型匹配)的Bean,并自动注入到相应的地方去。

                        如果一个接口多个实现类

         那么只通过注解@Autowired是不行的,会匹配到多个bean对象,就会报错。此时就需要注解@Qualifier("名字") 来根据名字指定唯一bean,名字为上述管理bean的默认名,或者value起的名字

  • resource(Javax包下面)
    • 单独写入注解@resource 功能和autowired一样,但是后者不能指定
    • @resource ("name") 等价于@autowired +@Qualifier("名字")可以指定

创建配置类,取代配置文件

        1、创建一个类,使用注解:

        @Configuration
        @ComponentScan(basePackages = {"com.ljh"})

                第一个注解表明是配置文件,第二个配置指定可扫描的文件

例如:

使用时,通过

ApplicationContext app=new AnnotationConfigApplicationContext(config.class)来加载,并创建对象,接下来就可以调用对象

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值