• Spring 两大核心IOC和DI


    Spring的两大核心是IOC和DI

    IOC:控制反转,对象创建的权利交给springApplication容器

    DI:依赖注入,注入的是属性

    传统意义上创建对象都是new操作。

    举个例子:

    dao层类:UserDao

    service层类:UserService

    web(controller)层:UserController

    三个层的调用关系为:

    web --->  service  --->   dao

    这样的情况

    web层会new一个service层对象

    service层会new一个dao层对象

    若是其中一个层的代码更改,也会导致其它层的代码也要做相应修改

    三个层之间的耦合度很高,不利于代码维护

    Spring对于上面的情况采用IOC和DI

    IOC:底层实现是工厂模式和java反射机制

    DI:依赖注入,有三种方式,构造函数注入,属性注入,set方法注入,多数情况下采用的set方法注入。

    Spring实现对象创建有两种方式:xml配置,注解方式

    xml配置方式:配置bean很多,个人觉得还是注解方式比较好

    xml配置方式:

    User类

    属性:name,age

    bean的其中一种写法

    属性注入的方式,创建一个User对象,名字和年龄为hahahh,18

    <bean id="user" class="com.smart.domain.User" >

      <property name="name" value="hahahh" />      <!--property属性,name对应User类里面属性的名字,value表示给属性赋的值,作用等同于setName(String name)方法-->

      <property name="age" value="18" />

    </bean>

    注解方式

    1.设置扫描contaxt ,指定扫描的包全路径如:com.smart.domain

    2.在不同的类上放置不同的注解,@Repository   @Service  @Controller 这几个注解的作用都是创建对象用的,没有非要写在哪一层的要求,放在不同的层上只是行业规范

    3.domain层@Repository

     service层@service

     web层@controller

    4.controller里面调用的service对象采用@Autowired

       @Autowired

       private UserService userService;

       @Autowired自动注入方式,也有其他注解实现注入

    最后总结

     控制反转对象创建的由spring容器来创建,创建的就是xml里面配置的bean

     依赖注入: 必须在控制反转的基础上才能进行,是对spring容器创建的对象(bean)属性进行赋值操作,例如对User类里面的name属性进行操作

     
  • 相关阅读:
    javascript定义函数后立即执行(IIFE)
    工作流选型专项,Camunda or flowable or?
    Excel中的xlsm宏密码怎么破解
    《生命是什么》总结
    《麦肯锡教我的思考武器》总结
    《作为意志和表象的世界》总结
    Go语言如何将json时间格式化为dateime格式
    《少有人走的路》总结
    《时间简史》总结
    架构的常规分类及复用重点
  • 原文地址:https://www.cnblogs.com/shuzhongruyu/p/8863525.html
Copyright © 2020-2023  润新知