这个学习是参照下面这个链接学习,作总结的。
链接: https://www.w3cschool.cn/wkspring/pesy1icl.html.
代码内容我就不放了,毕竟你们可以参考原文直接复制代码。这边也是我自己的学习,主要以自己记录为主,有什么需要帮助的可以给我留言(我自己还是个学渣呢,略略略~)
接下来开启我的Spring框架的自学。
首先那么多文档的介绍对我来说实在是太抽象了。(枯燥又不能完全理解,所以留到后面回头看)
Spring Hello World实例
这里用eclipse来写代码。
总结:这个比较简单了,说的是Spring是如何创建对象的。
1,创建了一个HelloWorld的类,有一个属性,并且有它的get、set方法。
2,那个Beans.xml重要的内容是这段:
<bean id="helloWorld" class="com.tutorialspoint.HelloWorld">
<property name="message" value="Hello World!"/>
</bean>
意思就是:我创建一个对象(根据类),他的id如上,属性和值我也如上。
3.在MainApp.java里,
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
obj.getMessage();
意思就是:我调用了Beans.xml(我刚刚对我要创建对象的描述),根据id取出创建的对象,并且调用其方法。
这个比较简单,很初步的理解,我也不知道后期的Spring有多少要学的。继续加油吧。
瞅瞅我们的进度:
开始Spring IoC的学习
Spring BeanFactory 容器
这个使用的例子与我们上面Spring HelloWorld实例就这个地方不同。
Spring BeanFactory 容器的MainApp.java
Spring HelloWorld实例的MainApp.java
你瞅瞅这句话就知道为啥用的是 ApplicationContext了。
ApplicationContext 包含 BeanFactory 所有的功能,一般情况下,相对于 BeanFactory,ApplicationContext 会更加优秀。当然,BeanFactory 仍可以在轻量级应用中使用,比如移动设备或者基于 applet 的应用程序。
最常被使用的 ApplicationContext 接口实现:
-
FileSystemXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你需要提供给构造器 XML 文件的完整路径。
-
ClassPathXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你不需要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量即可,因为,容器会从 CLASSPATH 中搜索 bean 配置文件。
-
WebXmlApplicationContext:该容器会在一个 web 应用程序的范围内加载在 XML 文件中已被定义的 bean。
第一个比较麻烦要写完整路径,第三个没有举例,我们直接用第二个 ClassPathXmlApplicationContext就好了。
Bean 的作用域
当在 Spring 中定义一个 bean 时,你必须声明该 bean 的作用域的选项。例如,为了强制 Spring 在每次需要时都产生一个新的 bean 实例,你应该声明 bean 的作用域的属性为 prototype。同理,如果你想让 Spring 在每次需要时都返回同一个bean实例,你应该声明 bean 的作用域的属性为 singleton。
Spring 框架支持以下五个作用域,分别为singleton、prototype、request、session和global session,5种作用域说明如下所示,
注意,如果你使用 web-aware ApplicationContext 时,其中三个是可用的。
singleton 是默认的作用域,也就是说,当定义 Bean 时,如果没有指定作用域配置项,则 Bean 的作用域被默认为 singleton。
我现在产生了问题:
objA和ojbB真的都是他的别名吗?
答:是的。
如果给ojbB也赋值了,调用ojbA有结果吗?结果是谁?
答:有结果,是最近一次修改值。
再创建一个objC也是最近一次的赋值结果吗?
答:是的。
prototype就是各自用各自的名字了
学到这里了https://www.w3cschool.cn/wkspring/xypt1icg.html
这个新的章节还没有开始整理呢,心里有数就好,哈哈哈哈。