您现在的位置是:首页 >技术杂谈 >Spring的使用网站首页技术杂谈
Spring的使用
简介Spring的使用
Spring具有两个最基本的功能
- 将对象存储到IOC容器(Spring)中
- 将对象从容器中取出来
1. 存储Bean对象
在Java中对象也叫做Bean
- 存储Bean之前,要先有Bean才行,所以要先创建一个Bean对象
public class User {
public void sayHi(String name) {
System.out.println("hello:" + name);
}
}
- 将创建的Bean注册到Spring容器中
我们需要在项目的resources中添加Spring的配置文件spring-config.xml,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 http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
</beans>
接下来将要存入容器的Bean对象写入xml中
作用:告诉Spring在启动加载的时候,捎上这个Bean对象,将Bean对象存入容器中
<?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 http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<bean id="user" class="User"></bean>
</beans>
注入Bean对象中的 id属性就类似于IP的域名,而class属性就类似点分十进制的IP,因为在class属性是“包名+类名”,在实际项目中包会非常多,对程序员不友好,因此使用id属性就相当于给这个Bean对象取了个别名。
2. 获取并使用Bean对象
- 得到Spring上下文(即Spring)对象,因为对象都交给Spring管理了,所以获取对象要从Spring中获取,那么就要先得到Spring上下文。
- 通过Spring上下文,获取到某一个Bean对象
- 使用Bean对象
public class App {
public static void main(String[] args) {
//1. 得到Spring的上下文对象,需要写上Spring配置信息的名称
ApplicationContext context =
new ClassPathXmlApplicationContext("spring-config.xml");
//2. 通过Spring对象,获取到Bean对象
//根据id属性来取Bean对象
User user = (User) context.getBean("user");
//3. 使用Bean对象
user.sayHi("张三");
}
}
2.1 获取Spring上下文的两种方式
上面是较优的写法,下面介绍的方法是过时的方法
BeanFactory beanFactory =
new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
面试题:ApplicationContext和BeanFactory的区别
- 从继承关系上看:ApplicationContext是BeanFactory的子类,除了具有BeanFactory的所有功能,他还拥有其他特性,如国际化支持,资源访问支持,事件传播的支持
- 从性能上看:BeanFactory诞生比较早,当时硬件资源比较稀缺,因此他加载Bean对象的方式是懒汉模式,性能较低;而ApplicationContext是一次性加载并初始化所有Bean对象,性能更高。
2.2 获取Bean对象的三种方法
- 在上面的代码中是通过id属性来获取的,得到的是Object对象需要强转,这就有可能出现两种情况(1)获取到的对象为Null,再去强转;(2获取到的Bean对象可能是其他对象,强转时会出现问题。
- 我们可以通过对象类型来获取Bean。
User user = context.getBean(User.class);
可能出现的问题
- 推荐写法:id+对象类型都写
User user = context.getBean("user", User.class);
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。