【编程不良人】快速入门Spring学习笔记02---IOC

配套视频:

【编程不良人】快速入门Spring,SpringBoot、SpringCloud学不好完全是因为Spring没有掌握!_哔哩哔哩_bilibili

4.Spring框架中的核心思想

4.1 IOC

  • IOC(inversion of control)控制反转

      
      # 1.定义
          将对象的创建由原来(new)的方式转移到spring配置文件中,交给spring工厂,由spring工厂完成对象的创建。
  • DI(dependency injection)依赖注入在IOC的基础上提出的补充概念

      
      # 1.定义
          Spring不仅要创建对象,还要建立类与类之间的关系,因此在控制反转的基础上又提出了依赖注入的概念。

实测:

spring.xml

DeptServiceImpl

测试:

 补充:

  • xml文件中的bean里面的id命名要见名知意,推荐使用接口首字母小写进行命名

  • 容器中都有IOC的概念,例如:tomcat 容器/网络服务器

  • 注释快捷键:Ctrl+/

  • 复制当前行到下一行:Ctrl+D

  • get、set、toString、构造方法、重写方法等:Alt+Insert

  • 跳转到接口实现类方法上:在接口上---Ctrl+Alt+B

  • 添加if/else、while、for、try/catch、synchronized、Runnable等:选中代码---Ctrl+Alt+T

  • psvm 打印 main方法

  • sout 打印 System.out.println();

  • fori 打印 for (int i = 0; i < ; i++) { },forj、forz以此类推

  • itar 打印 for (int i = 0; i < array.length; i++) { = array[i]; }

  • iter 打印 for (Object o : ) { }

  • DAO层:(持久层 / 数据访问层)主要与数据库进行交互,做数据持久层的操作【面向表】

    Service层:(业务层 / 服务层 )主要负责业务模块的逻辑应用设计,在service层调用接口进行业务逻辑处理【面向业务】

    Controller层:(控制层 )负责对具体业务模块的流程控制,与前台互交,把前台传进来的参数进行处理,即:Controller负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面。

    Entity层: (实体层 )数据库在项目中的类

    View层: (视图层)负责前台jsp页面的表示

    详见:Java中dao层、service层、controller层、entity层和view层的概述_疯狂的兔子Philip的博客-CSDN博客_java 实体层

4.2 AOP

AOP( Aspect Oriental Programing ) :面向切面的编程

5. SET方式注入

配套视频: https://www.bilibili.com/video/BV12k4y167jK?p=3

5.1 八种基本类型+String类型 +日期类型的注入

  <property name="name" value="zhagnsan"/>
  <property name="age" value="21"/>
  <property name="id" value="100063"/>
  <property name="bir" value="2012/12/12"/>
  <property name="price" value="23.23"/>

5.2 数组类型的注入 

  
  <!--注入数组类型数据-->
    <property name="qqs">
       <array>
           <value>xxx</value>
           <value>qqq</value>
           <value>vvvv</value>
        </array>
    </property>

5.3 注入引用类型和集合类型 

  
  <!--注入引用类型和对象-->
  <property name="userDAO" ref="userDAO"/>
  <property name="lists">
    <list>
      <value>aaa</value>
      <value>bbb</value>
      <value>ccc</value>
    </list>
  </property>
  <property name="maps">
    <map>
      <entry key="aa" value="xiaohei"/>
      <entry key="bb" value="xiaoming"/>
      <entry key="cc" value="xiaosan"/>
    </map>
  </property>
  <property name="props">
    <props>
      <prop key="url">jdbc:mysql://localhost:3306/test</prop>
      <prop key="driver">com.mysql.jdbc.Driver</prop>
      <prop key="username">hr</prop>
      <prop key="password">hr</prop>
    </props>
  </property>

注意:

1.引用类型使用ref属性注入,基本类型使用value属性注入

2.props是特殊的map,也采用key-value的形式进行标识

5.4 实测

spring.xml

  
  <?xml version="1.0" encoding="UTF-8"?>
  <beans xmlns="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
          <bean id="deptDAO" class="di.DeptDAOImpl"></bean>
  ​
          <bean id="deptService" class="di.DeptServiceImpl">
              <property name="deptDAO2" ref="deptDAO"/>
              <property name="name" value="Li Ming"/>
              <property name="bir" value="2022/03/31 20:17:58"/>
              <property name="array">
                  <array>
                      <value>小猪</value>
                      <value>小狗</value>
                      <value>小猫</value>
                  </array>
              </property>
              <property name="deptDAOS">
                  <array>
                      <ref bean="deptDAO"/>
                      <ref bean="deptDAO"/>
                      <ref bean="deptDAO"/>
                  </array>
              </property>
              <property name="hobbies">
                  <list>
                      <value>看书</value>
                      <value>打豆豆</value>
                      <value>睡觉</value>
                  </list>
              </property>
              <property name="daos">
                  <list>
                      <ref bean="deptDAO"/>
                      <ref bean="deptDAO"/>
                      <ref bean="deptDAO"/>
                  </list>
              </property>
              <property name="maps">
                  <map>
                      <entry key="aaa" value="123"/>
                      <entry key="bbb" value="456"/>
                      <entry key="ccc" value="789"/>
                  </map>
              </property>
              <property name="properties">
                  <props>
                      <prop key="111">qwe</prop>
                      <prop key="222">asd</prop>
                      <prop key="333">zxc</prop>
                  </props>
              </property>
          </bean>
  </beans>

DeptServiceImpl.java

  package di;
  ​
  import java.util.Date;
  import java.util.List;
  import java.util.Map;
  import java.util.Properties;
  ​
  public class DeptServiceImpl implements DeptService{
      private DeptDAOImpl deptDAO2;
      private String name;
      private Date bir;
      private String[] array;
      private DeptDAO[] deptDAOS;
      private List<String> hobbies;
      private List<DeptDAO> daos;
      private Map<String,String> maps;
      private Properties properties;
  ​
      public void setDeptDAO2(DeptDAOImpl deptDAO2) {
          this.deptDAO2 = deptDAO2;
      }
  ​
      public void setName(String name) {
          this.name = name;
      }
  ​
      public void setBir(Date bir) {
          this.bir = bir;
      }
  ​
      public void setArray(String[] array) {
          this.array = array;
      }
  ​
      public void setDeptDAOS(DeptDAO[] deptDAOS) {
          this.deptDAOS = deptDAOS;
      }
  ​
      public void setHobbies(List<String> hobbies) {
          this.hobbies = hobbies;
      }
  ​
      public void setDaos(List<DeptDAO> daos) {
          this.daos = daos;
      }
  ​
      public void setMaps(Map<String, String> maps) {
          this.maps = maps;
      }
  ​
      public void setProperties(Properties properties) {
          this.properties = properties;
      }
  ​
      @Override
      public void save(String name) {
          System.out.println("DeptServiceImpl: " + name);
          deptDAO2.save(name);
          System.out.println("Name: " + this.name);
          System.out.println("Bir: " + bir);
          for (String arr:array) {
              System.out.println(arr);
          }
          for (DeptDAO dao:deptDAOS) {
              System.out.println(dao);
          }
          hobbies.forEach(hobby-> System.out.println("hobby = " + hobby));
          daos.forEach(dao-> System.out.println("dao = " + dao));
          maps.forEach((key,value)-> System.out.println("key = " + key +",value = " + value));
          properties.forEach((key,value)-> System.out.println("key = " + key +",value = " + value));
      }
  }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值