|
Spring 创建与使用
创建 Spring 项目
我们使用 Maven 方式创建一个 Spring 项目
- 创建一个普通
Maven
项目 - 添加 Spring 框架支持 (
spring-context
,spring-beans
) - 添加启动类
创建 Maven 项目
添加 Spring 框架支持
在 pom.xml
中添加 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>
粘贴完之后, 记得刷新.
如果刷新之后, 还是导入失败, 我们需要设置国内源:
搜索 maven 按照如图设置
按照路径找到 setting.xml 文件
在里面找到 mirrors 标签, 在其中填入如下代码
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
如果继续出错, 删除本地 maven 仓库的 jar 包, 重新下载
添加启动类
在 java
文件夹下创建一个启动类, 包含 main
方法
存储 Bean 对象
存储 Bean
分为两步:
- 存储 Bean 之前, 需要先创建
Bean
- 将创建的 Bean 注册到
Spring
容器中
创建 Bean
如图创建一个普通对象
将 Bean 注册到容器
添加 Spring 配置文件, spring-config.xml
, 将文件放到 resources
的根目录下
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"
xmlns:content="http://www.springframework.org/schema/context"
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>
将 User
对象注册到 Spring 中, 在 <beans>
中添加如下配置:
<bean id="user" class="User"></bean>
从 Spring 中读取 Bean 对象
- 得到
Spring
对象 (上下文对象) - 通过 Spring 上下文, 获取某一个指定的
Bean
对象 - 使用
Bean
对象
#
使用 ApplocationContent
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) {
// 得到 Spring 对象, xml名字一定要和 resources 下 xml名字一一对应
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
// 从 Spring 中取出 Bean 对象
User user = (User) applicationContext.getBean("user");
// 使用 Bean (可选)
System.out.println(user.sayHi());// 根据名称获取 Bean
}
}
运行结果展示
#
使用 BeanFactory
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class App {
public static void main(String[] args) {
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
User user = (User) beanFactory.getBean("user");
System.out.println(user.sayHi());
}
}
#
AppliactionContext VS BeanFactory
相同点:
- 都可以得到
Spring
上下文对象 - 都是来自
Spring
的顶级接口
不同点:
- 继承关系:
ApplicationContext
属于 BeanFactory 的子类:BeanFactory
只有最基础访问 Bean 的能力, 而 ApplicationContext 除了拥有 BeanFactory 功能之外, 还包含了更多的功能, 如: 国际化支持, 资源访问, 事件传播等. - 性能:
ApplicationContext
加载方式是将 Bean 对象一次性加载, 所以在后面访问 Bean 对象时会很快;BeanFactory
需要某个 Bean 时, 采用加载 Bean 对象, 所以它在执行 Bean 获取时, 比较慢
取出 Bean 对象的方法
User user = (User) applicationContext.getBean("user");// 根据 Bean 名称(标识) 来得到 Bean 对象
User user1 = applicationContext.getBean(User.class);// 根据 Bean 类型来得到 Bean 对象
User user2 = applicationContext.getBean("user", User.class);// 根据 Bean 名称 + Bean 类型来得到 Bean 对象
# 注意事项 #
- 当根据 Bean 名称来获取 Bean 的时候,
getBean()
时, 当 Bean 不存在, 获取为null
, 强转类型时就会出错 - 当根据 Bean 类型来获取 Bean 的时候, 如果
Spring
中存在相同对象的时候, 使用该方法获取 Bean 对象会报错
总结
|
以上就是今天要讲的内容了,希望对大家有所帮助,如果有问题欢迎评论指出,会积极改正!!