spring的学习

Spring的学习

IOC的理论推导
  • 在之前程序员写代码,都是service层去调用dao层,这个时候都是一个需求写一个dao接口然后写一个dao的实现类,然后在service去new一个dao层的对象,然后通过这个对象来调用dao实现类的方法。如果此时客户需要增加需求,那么我们就需要再写一个dao层的实现类,然后再service层中去创建新的dao层实现类的对象,也就是修改我们业务层之前new的那个对象的代码,然后调用新的dao实现类的方法,这样每次增加一个需求我们程序员就需要去修改原本的代码,这样的代码是不符合常理的。
  • 之后的解决方法就是,我们利用set方法来实现动态的更改,转变为用户需要哪个接口,就用set方法去调用实现类,这是一种思想的转变,从程序员来根据客户的需求选择性的创建对象,转变为由用户自己调用自己想要的对象。这也是sprin的核心思想,控制反转IOC。
  • 从最开始程序的主动创建对象是程序员,到后来的程序变成了用户对象的接收者,这种思想从本质上解决了程序的耦合性,更加专注于service层,这就是IOC的原型。
IOC
  • IOC也就是spring帮我们创建对象,把所有的对象都交spring,然后在ApplicationContext中配置bean,一个bean就是一个对象,然后通过它的property属性和类中的set方法来进行注入。
  • IOC的默认创建参数的模式是无参构造,当然也有有参构造的创建对象方法,此时可以通过下标,类型和参数名三种方式对其进行赋值。
DI
  • 构造器注入
  • set方法注入
    • 依赖:bean对象的创建依赖于容器
    • 注入:bean对象中的属性由容器注入
  • 其他方式注入
  • bean默认是单例模式,也就是说一个ApplicationContext当中的一个对象就只有一个,取出多个来也是同一个地址。作用域单词scope。
Bean的默认装配
  • 自动装配是Spring满足bean依赖的一种方式
  • Spring会在上下文中寻找,自动给bean装配属性
  • 在Spring中有三种自动装配方式
    • 在xml中显示的装配
    • 在java中显示装配
    • 隐式的自动装配(重点)
      • @autowired和@Resource的区别
      • 都是用来实现自动装配的,但是autowired是通过byName的方式,而且必须要求这个对象存在,后者是默认通过byName的方式,如果name不存在name就会通过byType
Spring中的常用注解
  • 1.@Autowire(相当于bean):自动装配注解,通过byName的方式来进行属性的装配,如果给的id和实际id不一样,那我们可以通过@Qualifier(value=“xxx”)来实现。
  • 2.@Nullable:如果字段标记了这个注解,那么说明这个字段可以为空
  • 3.@Resource:跟Autowire一样是自动装配,但是它会先通过byName的方式,找不到再通过ByType的方式,而且他可以直接再后面加上(value=“xxx”)
  • @Component(相当于property):组件注解,把bean交给spring管理,在配置文件中写上scan这个命令后,我们可以在类的上方加一个这个注解表示它是一个组件,它还可以帮我们省略写bean的步骤,等于帮我们创建了一个对象。
    • Component注解还有三个衍生注解,为了适配我们的MVC三层架构,在dao层我们一般用@Repository,在service层我们一般用@Service,在Controller层我们一般用@Controller。这四个注解的功能都是一样的,都是将我们的类交给Spring容器。

小结:xml与注解

  • xml更加万能,更加灵活,适用于任何场景,维护相对方便
  • 注解的话不是自己的类就使用不了,维护起来也相对复杂
  • 实践的话一般用xml来管理bean,用注解来实现属性的注入。
  • 在使用注解的时候,我们一定要记得让注解生效
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值