OCP原则

ocp指开闭原则,对扩展开放,对修改关闭。是七大原则中最基本的一个原则。

依赖倒置原则(DIP)

什么是依赖倒置原则

核心是面向接口编程、面向抽象编程, 不是面向具体编程。

依赖倒置原则的目的

降低耦合度,提高扩展力

什么是控制反转

控制反转:Ioc(Inversion of Controll),一种编程思想、设计模式。为了降低程序耦合度

反转有两点:

  1. 不在程序中采用硬编码的方式new对象,把创建对象交给别人(UserService userService = new UserServiceImplForMysql())。
  2. 不在程序中采用硬编码的方式维护对象关系。

spring框架

spring实现了Ioc,因此可以创建和维护对象见的关系。

控制反转实现方式主要有 依赖注入(Dependency Injection DI)

依赖注入的方式有以下方式:

  1. Set注入(执行Set方法赋值)
  2. 构造方法注入(执行构造方法赋值)

依赖注入中的“依赖”、“注入”的含义

依赖:A对象和B对象的关系

注入:是一种手段,通过这种手段让A和B产生关系。

依赖注入的实现方式有:set注入和构造方法注入。

set注入

  1. 配置文件配置bean

    
    

    
        

        
    
  1. 在类中写set方法
package com.ali.service;

import com.ali.dao.UserDao;

public class UserService {

    private UserDao userDao;

    // set注入需要提供一个set方法,方法名以set开头,spring容器调用这个set方法注入UserDao
        public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void saveUser(){
        userDao.insertUser();
    }
}

这样即可注入成功。

注入外部bean


    

    

        
    

注入内部bean

    
      

          
      
    

注入简单类型




    
    
    
    

实际开发中,一般不会吧Date类型当作简单类型,会使用ref来注入Date类型

级联属性赋值



    
        
        
        
        
    
    
    

注入数组

   


    
    
    
    
    
        
        
        
        
    
    
        
        
        
        
    
   
   

        
            
                
                
            
        

        
            
                
                
                
            
        
    

注入List和Set类型

    

        
            
                张三
                里斯
                詹姆思
            
        

        
            
                北京
                上海
                广州
            
        
    

注入Map集合


      
          
              
              
              
          
      

注入Properties类型


        
            
                v1
                v2
                v3
            
        

注入null和空字符串


        
            
        
        


        

        
            
        
        

注入特殊字符串

 
        

        
        

            
        
    

构造注入

  1. 配置文件配置bean
    
    

    

        
        
        
  • 在类中写构造方法
  • public class CustomerService {
    
        private UserDao userDao;
    
        public CustomerService(UserDao userDao) {
            this.userDao = userDao;
        }
    
        public  void save(){
            userDao.insertUser();
        }
    }
    

    p命名空间注入(简化set注入)

    
      
    
      
    

    c命名空间注入(简化构造注入)

    
    
    

    基于xml的自动装配byName

    
    
        
    
    
        
    

    基于xml的自动装配byType

    
        
        
    
        
    
    
    

    引入外部的属性配置文件

       
        
    
        
            
            
            
            
            
        
    

    jdbc.properties文件

    jdbc.diverClass=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/spring6db?useSSL=false&server
    jdbc.username=root
    jdbc.password=123456
    

    spring怎么实例化对象?

    默认情况下spring通过反射机制,调用类的无参数构造方法实例化对象

    把创建好的对象存储到Map结构中。

    当有多个配置文件时,可读取多个配置文件

    ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml","spring-dao.xml");
    

    可以在配置文件中注入jdk自带的类,只要这个类有无参数构造方法就行。

    getBean()时,Bean的id不存在时会报错

    从类路径之外的路径获取xml配置文件

    // 读取类路径之外的配置文件
    ApplicationContext context = new FileSystemXmlApplicationContext("D:/applicationContext.xml");
    Object user=  context.getBean("user"); // 获取spring容器中的对象
    

    ApplicationContext的超级父接口是BeanFactory。

    BeanFactory是Ioc容器的顶级接口。

    spring的Ioc容器底层使用了工厂模式。

    启用Log4j2

    spring5之后支持Log4j2框架。

    1. 引入依赖
    
        org.apache.logging.log4j
        log4j-slf4j2-impl
        2.19.0
    
    
        org.apache.logging.log4j
        log4j-core
        2.19.0
    
    
    1. 编写配置文件,文件名必须是log4j2.xml,放在类根路径下
    
    
    
    
        
            
            
                
            
        
    
        
            
            
                
                
            
        
    
    
    
    1. 使用日志框架 ,在SpringTest01类中使用如下代码
    Logger logger = LoggerFactory.getLogger(SpringTest01.class);
    logger.info("日志信息");
    
    "

    原文地址: https://www.cveoy.top/t/topic/qFR7 著作权归作者所有。请勿转载和采集!

    免费AI点我,无需注册和登录