本文最后更新于 31 天前,如有错误请邮件至 zhiligyi222na@gmail.com
一、系统架构图
二、核心概念
三、IoC控制反转入门案例
1.创建一个Maven项目
2.导入Spring坐标
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.18</version>
</dependency>
</dependencies>
3.定义Spring管理的类(接口)
dao/BookDao.java数据层接口
public interface BookDao {
public void save();
}
dao/impl/BookDaoImpl.java数据层实现类
public class BookDaoImpl implements BookDao {
public void save() {
System.out.println("book dao save ...");
}
}
service/BookService.java业务层接口
public interface BookService {
public void save();
}
sevice/impl/BookServiceImpl.java业务层实现类
public class BookServiceImpl {
private BookDao bookDao=new BookDaoImpl();
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
4.创建Spring配置文件applicationContext.xml,配置对应的类作为Spring管理的bean
<bean id="bookService" class="org.example.service.impl.BookServiceImpl"></bean>
5.初始化IoC容器(Sping核心容器/Spring容器),通过容器获取bean
public class Main {
public static void main(String[] args) {
//加载配置文件得到上下文对象,也就是容器对象
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
//获取Bean对象
BookService bookService=(BookService) ctx.getBean("bookService");
bookService.save();
}
}
6.这样就可以通过IoC获取实现类,而不用在代码里写死具体名称的类来实现,随时可以更换实现类,从而降低代码的耦合性
四、DI依赖注入入门案例
1.删除使用new的形式创建对象的代码
public class BookServiceImpl implements BookService {
//删除使用new形式创建的代码
//private BookDao bookDao=new BookDaoImpl();
private BookDao bookDao;
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
2.提供依赖对应的setter方法
public void setBookDao(BookDao bookDao){
this.bookDao=bookDao;
}
3.配置service与dao之间的关系
<bean id="bookService" class="org.example.service.impl.BookServiceImpl">
<property name="bookDao" ref="bookDao"/>
</bean>
<bean id="bookDao" class="org.example.dao.impl.BookDaoImpl"/>
4.这样对象的创建和依赖关系的管理完全交给了 Spring 容器
五、bean基础配置
六、bean的实例化
1.构造方法,bean调用实现类的无参构造方法
2.静态工厂,了解即可
3.实例工厂,了解即可
4.FactoryBean
七、bean的生命周期
八、依赖注入方式
1.setter注入
2.构造器注入
3.自动装配
4.集合注入