springIoc的注解配置方式

1.用注解的方式注册bean到ioc容器

有四个注解方式

@Controller:控制器,推荐给controller层添加此注解

@Service:业务逻辑,推荐给业务逻辑层添加此注解

@Repository:仓库管理,推荐给数据访问层添加此注解

@Component:给不属于以上基层的组件添加此注解

使用注解需要以下步骤:

1、添加上述四个注解中的任意一个

2、在xml中添加自动扫描类

<context:component-scan base-package="com.yang" >
</context:component-scan>

注意:

1.组件的id默认就是组件的类名首字符小写,如果非要改名字的话,直接在注解中添加即可

2.组件默认情况下都是单例的,如果需要配置多例模式的话,可以在注解下添加@Scope注解

2.定义扫描包时要包含的类和不包含的类

在xml中添加自动扫描类时,可以添加不扫描的类

<context:component-scan base-package="com.yang">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

type:表示指定过滤的规则

        annotation:按照注解进行排除,标注了指定注解的组件不要, expression表示要过滤的注解         assignable:指定排除某个具体的类,按照类排除,expression表示不注册的具体类名         aspectj:后面讲aop的时候说明要使用的aspectj表达式,不用

        custom:定义一个typeFilter,自己写代码决定哪些类被过滤掉,不用

        regex:使用正则表达式过滤,不用

添加扫描的类时,一般配合use-default-filters使用

use-default-filters 默认true, 会默认包含扫描@Controller @Service @Repository @Component

false,不会扫描@Controller @Service @Repository @Component

<context:component-scan base-package="com.yang" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

这样的话就是只扫描标记controller的类

3.自动注入

当使用AutoWired注解的时候,自动装配的时候是根据类型实现的。

        1、如果只找到一个,则直接进行赋值。

        2、如果没有找到,则直接抛出异常。

        3、如果找到多个,那么会按照变量名作为id继续匹配。

                1)匹配上直接进行装配

                2)如果匹配不上则直接报异常

                3)如果匹配多个有如下解决办法

                @Qualifier注解来指定id的名称,让spring不要使用变量名;

                可以修改bean名字对应的属性名字:@Service("userService");

                可以通过@Primary,设置其中一个Bean为主要的自动注入Bean

                通过泛型


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值