spring6-多种类型的注入方式
OCP原则
ocp指开闭原则,对扩展开放,对修改关闭。是七大原则中最基本的一个原则。
依赖倒置原则(DIP)
什么是依赖倒置原则
核心是面向接口编程、面向抽象编程, 不是面向具体编程。
依赖倒置原则的目的
降低耦合度,提高扩展力
什么是控制反转
控制反转:Ioc(Inversion of Controll),一种编程思想、设计模式。为了降低程序耦合度
反转有两点:
- 不在程序中采用硬编码的方式new对象,把创建对象交给别人(UserService userService = new UserServiceImplForMysql())。
- 不在程序中采用硬编码的方式维护对象关系。
spring框架
spring实现了Ioc,因此可以创建和维护对象见的关系。
控制反转实现方式主要有 依赖注入(Dependency Injection DI)
依赖注入的方式有以下方式:
- Set注入(执行Set方法赋值)
- 构造方法注入(执行构造方法赋值)
依赖注入中的“依赖”、“注入”的含义
依赖:A对象和B对象的关系
注入:是一种手段,通过这种手段让A和B产生关系。
依赖注入的实现方式有:set注入和构造方法注入。
set注入
- 配置文件配置bean
- 在类中写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和空字符串
注入特殊字符串
构造注入
- 配置文件配置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框架。
- 引入依赖
org.apache.logging.log4j
log4j-slf4j2-impl
2.19.0
org.apache.logging.log4j
log4j-core
2.19.0
- 编写配置文件,文件名必须是log4j2.xml,放在类根路径下
- 使用日志框架 ,在SpringTest01类中使用如下代码
Logger logger = LoggerFactory.getLogger(SpringTest01.class);
logger.info("日志信息");
" 原文地址: https://www.cveoy.top/t/topic/qFR7 著作权归作者所有。请勿转载和采集!