Spring为什么这么火 之 Spring的创建及存储、获取Bean对象
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
使用ApplicationContext作为Spring的上下文 【更常用】
面试题ApplicationContext VS BeanFactory
3.2、通过Spring上下文获取某一个指定的对象【3种方式】
1、创建Spring项目
三步即可搞定
1.1、创建一个Maven项目
1.2、添加Spring框架支持
在pom.xml中添加
<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>
添加依赖加载时间可能需要一点时间耐心等待哈
1.3、添加启动类
在java文件下创建启动类即可
2、存储Bean对象
存入需要先有这么个对象才能谈到存呀~
2.1、创建Bean对象
Bean对象就是Java中一个普通对象而已啦~
例
public class User {
public void Hello() {
System.out.println("hello world");
}
}
2.2、将Bean对象注册到Spring容器中
添加配置文件并且要以resources为根目录
该文件下添加如下内容
<?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>
如果爆红刷新一下即可~
接下来就是正式存储Bean对象具体操作
在<beans>中添加如下代码
<bean id="user" class="User"></bean>
这里的class值需要对应
如果你的类在某个包下那你就包名1.包名2.类名
3、获取、使用Bean对象
3.1、得到Spring上下文对象
Spring上下文是什么其实就是Spring本身
使用ApplicationContext作为Spring的上下文 【更常用】
因为对象都交给Spring管理了所以获取对象对象要从Spring中获取那就得先得到Spring的上下文
ApplicationContext context = new ClassPathXmlApplicationContext("Spring.xml");
括号里填什么呢
使用 BeanFactory作为Spring的上下文
BeanFactory context = new XmlBeanFactory(new ClassPathResource("Spring.xml"));
二者的效果是一样的
面试题ApplicationContext VS BeanFactory
相同点
- 都可以得到Spring上下文对象
- 都是来自Spring的顶级接口
不同点
- 继承关系ApplicationContext 属于 BeanFactory 的子类
- 功能BeanFactory只有最基础的访问Bean的能力但是ApplicationContext除了有BeanFactory功能以外还包含了自己独有的功能如国际化支持、资源访问、事件传播等
- 性能方面的区别ApplicationContext 加载方式是将Bean对象一次性加载后期访问Bean对象时就会很快BeanFactory需要某个Bean时采用加载Bean对象所以它在执行Bean获取时比较慢
3.2、通过Spring上下文获取某一个指定的对象【3种方式】
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
//1、得到Spring的上下文对象
ApplicationContext context = new ClassPathXmlApplicationContext("Spring.xml");
//2、加载某个Bean
//方法一
User user = (User) context.getBean("user");//根据bean的名称【标识】
//方法二
//不用强转了
// User user1 = context.getBean(User.class);//根据bean类型获取bean
//方法三
User user2 = context.getBean("user",User.class);//根据bean名称加上bean对象/类型
//3、调用相应的方法
user.Hello();
//user1.Hello();
user2.Hello();
}
}
方法二中为什么把他注释了呢因为咱们在Spring.xml中是这样写滴
一个类引入了两次当它加载时他就不知道加载哪个【一个类每注入一次都是不一样的可以自己去敲代码看看user和user1是否相等】 当我们只注入一次时当然是可以使用方法二的
最优方法是方法三没有了方法一的强转【可能会带来问题】也不会产生方法二的弊端
注意Id需要一致
3.3、使用Bean对象
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
//1、得到Spring的上下文对象
ApplicationContext context = new ClassPathXmlApplicationContext("Spring.xml");
//2、加载某个Bean
User user = (User) context.getBean("user");
//3、调用相应的方法
user.Hello();
}
}
咱们下期见咯~