Spring 的核心是控制反转(IoC)和面向切面(AOP)。
Spring 官网:https://spring.io/projects/spring-framework
1、IoC:Inversion of Control(控制反转)
控制反转是一个通用的概念,不是什么新技术而是一种设计思想,好比于MVC。
其本意就是将原本程序中手动创建对象的控制权,交由 Spring框架来原理。
其作用是创建对象并且维护对象之间的依赖关系,实现了程序的解耦合。
2、DI:Dependency Injection(依赖注入)
依赖注入是指 Spring创建对象的过程中,将对象依赖的属性(常量,对象,集合)通过配置设值给该对象。
Spring支持的依赖注入方式:xml配置注入( setter方法注入,构造方法注入等)和注解注入
3、Spring IoC容器(其原理:反射和内省机制)
BeanFactory:生产 bean对象的工厂,Spring最底层的接口,只提供了IoC容器的功能:负责配置,创建和管理bean,被 Spring IoC容器管理的对象称为bean。Spring IoC容器通过读取配置文件中的配置元数据,通过元数据对应用中的各个对象进行实例化和装配。在应用中,一般不使用BeanFactory,而推荐使用 ApplicationContext(应用上下文)
ApplicationContext 接口继承了BeanFactory接口,还提供了AOP集成、国际化处理等功能
4、BeanFactory与ApplicationContext创建bean的区别
BeanFactory:需要等到获取某个bean的时候才会才会创建该bean,即延迟初始化
ApplicationContext:在启动Spring容器时就会创建所有的bean(Web应用中推荐)
在xml中也可以配置延迟 lazy-init
二、xml配置注入bean1. setter方法注入
指 IoC容器通过成员变量的 setter 方法来注入被依赖对象,使用 property标签。这种注入方式简单、直观,因而在 Spring 依赖注入里大量使用。
mvc 类
public class User {
private int id;
private String username;
private String password;
private Map map = new HashMap();
private List list = new ArrayList(); // Set 类同 List
... 必须提供 setter 方法
}
public class UserServiceImpl implements UserService{
//面向接口编程
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
... 必须提供 setter 方法
}
配置文件:
123
lisi
zs
测试类:
@Test
public void test() {
// 1.初始化ioc容器(装对象的容器)
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.从容器中获得创建好的对象
User user = context.getBean("user", User.class);
System.out.println(user);
}
-------
User [id=5, username=admin, password=>123
测试类:
@Test
public void test() {
// 1.初始化ioc容器(装对象的容器)
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.从容器中获得创建好的对象
UserServiceImpl userService = context.getBean("userService",UserServiceImpl.class);
System.out.println(userService);
}
------
UserServiceImpl [userDao=cn.jq.springdemo.dao.UserDaoImpl@13c27452, user=User [id=5, username=admin, password=>123
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?