0
点赞
收藏
分享

微信扫一扫

Spring(Spring的理解+DI+Spring的创建)

Jonescy 2022-11-30 阅读 131

目录

1. Spring 是什么

2. DI

3. 面试题: IoC 和 DI 有什么区别?

4. Spring 的创建

5. 将 Bean (对象) 存储到 Spring (容器) 中

6. 将 Bean (对象) 从 Spring (容器) 中取出来 

7. 面试题: ApplicationContext 和 BeanFactory的区别

8. getBean 更多用法


1. Spring 是什么

那么什么是 IoC 容器? 

Spring IoC 容器最核心的功能:

Spring 是一个 IoC 容器, 说的是对象的创建和销毁的权利都交给 Spring 来管理了, 它本身又具备了存储对象和获取对象的能力. 


2. DI

说到IoC 就要提到 "DI", DI 是 Dependency Injection 的缩写,翻译过来就是 "依赖注入" 的意思


3. 面试题: IoC 和 DI 有什么区别?


4. Spring 的创建

(1) 创建一个 maven 项目

输入项目名就可以了

(2) 添加 spring 框架支持(spring-context/spring-beans)

先配置镜像国内源

<mirror>  
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

然后再添加Spring框架支持 

    <dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
</dependencies>

(3) 创建一个启动类并添加 main


5. 将 Bean (对象) 存储到 Spring (容器) 中

存储 Bean 对象三步(两步)走

(1) 在 spring 项目中添加配置文件

<?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">

</beans>

 (2) 创建一个 Bean 对象

(3) 在配置文件中将需要保存到 spring 中的 Bean 对象进行注册

id可以不等于 class 里面的类名,但是要尽量符合规范

类名使用大驼峰, bean id 通常使用小驼峰. 

假设类名是 UserInfo, 那么通常情况下 id 它应该是 userInfo 


6. 将 Bean (对象) 从 Spring (容器) 中出来 

获取并使用 Bean 对象,分为以下 3 步:

import com.beans.UserBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class app {
public static void main(String[] args) {
// 1. 得到 spring 上下文对象
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

// 2. 根据上下文对象提供的方法,获取需要使用的 bean 对象
UserBean userBean = (UserBean) context.getBean("user");

// 3. 可以使用 bean 对象
userBean.sayHi("张三");
}
}
import com.beans.UserBean;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;

public class app {
public static void main(String[] args) {
// 1. 得到 spring 上下文对象
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));

// 2. 根据上下文对象提供的方法,获取需要使用的 bean 对象
UserBean userBean = (UserBean) beanFactory.getBean("user");

// 3. 可以使用 bean 对象
userBean.sayHi("张三");
}
}
package com.beans;
//普通的 bean 对象
public class UserBean {
public void sayHi(String name) {
System.out.println("你好:" + name);
}
}
<?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="user" class="com.beans.UserBean"></bean>
</beans>

7. 面试题: ApplicationContext 和 BeanFactory的区别


8. getBean 更多用法

(1) 使用 bean name 获取 bean

 (2) 根据 bean type 获取 bean

(3) 根据 bean name 和类型获取 bean (推荐使用)

举报

相关推荐

0 条评论