zoukankan      html  css  js  c++  java
  • 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属性进行操作

     
  • 相关阅读:
    42.纯 CSS 创作一个均衡器 loader 动画
    41.纯 CSS 绘制一支栩栩如生的铅笔
    1.如何在Cloud Studio上执行Python代码?
    2.每个 HTML 文件里开头都有个<!DOCTYPE>
    39.纯 CSS 创作一个表达怀念童年心情的条纹彩虹心特效
    LOJ #2127. 「HAOI2015」按位或 min-max容斥+FWT
    HDU
    LOJ #3044. 「ZJOI2019」Minimax 搜索 动态DP+概率
    LOJ #3043. 「ZJOI2019」线段树 线段树+分类讨论
    Comet OJ
  • 原文地址:https://www.cnblogs.com/shuzhongruyu/p/8863525.html
Copyright © 2011-2022 走看看