目录
1、创建Spring项目
1.1、创建一个Maven项目
1.2、添加Spring框架支持
1.3、添加启动类
2、存储Bean对象
2.1、创建Bean对象
2.2、将Bean对象注册到Spring容器中
3、获取、使用Bean对象
3.1、得到Spring上下文对象
使用ApplicationContext作为Spring的上下文 【更常用】
使用 BeanFactory作为Spring的上下文
面试题:ApplicationContext VS BeanFactory
3.2、通过Spring上下文,获取某一个指定的对象【3种方式】
3.3、使用Bean对象
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();
}
}
咱们下期见咯~