ioc的注解实现

 实现步骤:
1.加入依赖
2.创建类,在类中加入注解
3.创建spring的配置文件
  声明组件扫描器的标签,指名注解在你的项目的中的位置。
4.使用注解创建对象, 创建容器ApplicationContext

@Component注释

   @Component: 创建对象的, 等同于<bean>的功能
     属性:value就是对象的名称,也就是bean的id值,
           value的值是唯一的,创建的对象在整个spring容器中就一个
     位置:在类的上面

   @Component(value = "myStudent")等同于
   <bean id="myStudent" class="com.bjpowernode.ba01.Student" />

   spring中和@Component功能一致,创建对象的注解还有:
   1.@Repository(用在持久层类的上面) : 放在dao的实现类上面,
               表示创建dao对象,dao对象是能访问数据库的。
   2.@Service(用在业务层类的上面):放在service的实现类上面,
               创建service对象,service对象是做业务处理,可以有事务等功能的。
   3.@Controller(用在控制器的上面):放在控制器(处理器)类的上面,创建控制器对象的,
                  控制器对象,能够接受用户提交的参数,显示请求的处理结果。
   以上三个注解的使用语法和@Component一样的。 都能创建对象,但是这三个注解还有额外的功能。
   @Repository@Service@Controller是给项目的对象分层的。


@Component注解使用方式:
  1.使用value属性,指定对象名称
    @Component(value = "myStudent")
  2.省略value
    @Component("myStudent")
  3.不指定对象名称,由spring提供默认名称: 类名的首字母小写
    @Component

component-scan组件扫描器

 <!--声明组件扫描器(component-scan),组件就是java对象
        base-package:指定注解在你的项目中的包名。
        component-scan工作方式: spring会扫描遍历base-package指定的包,
           把包中和子包中的所有类,找到类中的注解,按照注解的功能创建对象,或给属性赋值。

       加入了component-scan标签,配置文件的变化:
        1.加入一个新的约束文件spring-context.xsd
        2.给这个新的约束文件起个命名空间的名称
 -->
<context:component-scan base-package="包名" />

注:指定多个包的三种方式:
 1.使用多次组件扫描器,指定不同的包
    <context:component-scan base-package="com.hvks.ba01" />
    <context:component-scan base-package="com.hvks.ba02" />
 2.使用分隔符(;,) 分割多个包名
    <context:component-scan base-package="com.hvks.ba01;com.hvks.ba02" />
 3.指定父包
    <context:component-scan base-package="com.hvks" />

注解实现类型赋值:

@Value: 简单类型的属性赋值
    属性: value 是String类型的,表示简单类型的属性值
    位置: 1.在属性定义的上面,无需set方法,推荐使用。
          2.在set方法的上面

@Autowired: spring框架提供的注解,实现引用类型的赋值。
  spring中通过注解给引用类型赋值,使用的是自动注入原理 ,支持byName, byType
    @Autowired:默认使用的是byType自动注入。
     *  位置: 1)在属性定义的上面,无需set方法, 推荐使用
              2)在set方法的上面
             
     *  属性:required ,是一个boolean类型的,默认true
             required=true:表示引用类型赋值失败,程序报错,并终止执行。
             required=false:引用类型如果赋值失败, 程序正常执行,引用类型是null
      
    如果要使用byName方式,需要做的是:
     *  1.在属性上面加入@Autowired
     *  2.在属性上面加入@Qualifier(value="bean的id") :表示使用指定名称的bean完成赋值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hvk_l

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值