JavaEE
Servlet —— Servlet API
Spring —— 初学 Spring, 理解控制反转
我们使用 Maven 方式创建一个 Spring 项目
Maven
项目spring-context
, spring-beans
)创建 Maven 项目
添加 Spring 框架支持
在 pom.xml
中添加 Spring 框架支持
org.springframework spring-context 5.2.3.RELEASE org.springframework spring-beans 5.2.3.RELEASE
粘贴完之后, 记得刷新.
如果刷新之后, 还是导入失败, 我们需要设置国内源:
搜索 maven 按照如图设置
按照路径找到 setting.xml 文件
在里面找到 mirrors 标签, 在其中填入如下代码
alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ central 如果继续出错, 删除本地 maven 仓库的 jar 包, 重新下载
添加启动类
在 java
文件夹下创建一个启动类, 包含 main
方法
存储 Bean
分为两步:
Bean
Spring
容器中创建 Bean
如图创建一个普通对象
将 Bean 注册到容器
添加 Spring 配置文件, spring-config.xml
, 将文件放到 resources
的根目录下
Spring
配置⽂件的固定格式为以下内容
将 User
对象注册到 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 获取时, 比较慢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 对象
# 注意事项 #
getBean()
时, 当 Bean 不存在, 获取为 null
, 强转类型时就会出错Spring
中存在相同对象的时候, 使用该方法获取 Bean 对象会报错以上就是今天要讲的内容了,希望对大家有所帮助,如果有问题欢迎评论指出,会积极改正!!
下一篇:攻防世界reverse-box