发表于: 2017-08-08 21:22:00
1 813
今天完成的事:继续学习spring的相关知识 看了很多spring基础 这个框架与原来比较
以获取对象的方式来进行比较 传统的方式 是通过new 关键字主动创建一个对象
而Spring中对象的生命周期由Spring来管理,直接从Spring那里去获取一个对象。使用IOC方式, IOC是反转控制(\nversion Of Control)的缩写,就像控制权从本来在自己手里,交给了Spring。
在resource目录下新建applicationContext.xml文件
applicationContext.xml是Spring的核心配置文件,通过关键字c即可获取Category对象,该对象获取的时候,即被注入了字符串"category 1“到name属性中
打个比喻:传统方式:相当于你自己去菜市场new 了一直鸡,但是是生鸡,要自己拔毛,去内脏,再上花椒,酱油,烤制,经过各种工序之后,才可以食用。 用IOC相当于去馆子(Spring)点了一直 鸡,交到你手上的时候,已经五味俱全,你就只管吃就行了。
<
bean
name
=
"c"
class
=
"com.jnshu.Category"
>
<
property
name
=
"name"
value
=
"category 1"
/>
</
bean
>
测试文件
package
com.jnshu.test;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
import
com.jnshu.Category;
public
class
TestSpring {
public
static
void
main(String[] args) {
ApplicationContext context =
new
ClassPathXmlApplicationContext(
new
String[] {
"applicationContext.xml"
});
Category c = (Category) context.getBean(
"c"
);
System.out.println(c.getName());
}
}
还有一些代码没有调试成功
明天计划的事:继续Spring 尝试与Mybatis融合
遇到的问题:因为理解的很不好 出现很多错误 没有调试好
今天的收获:学习 Spring的工厂容器 ApplicatioContext 接口有两个实现类:
ClassPathXmlApplicationContext :加载类路径下 Spring 的配置文件.
FileSystemXmlApplicationContext :加载本地磁盘下 Spring 的配置文件.
BeanFactory:
BeanFactory :是在 getBean 的时候才会生成类的实例.
ApplicationContext :在加载 applicationContext.xml(容器启动)时候就会创建.
xml配置文件
生命周期设置:通过配置<bean>标签上的 init-method 作为 Bean 的初始化的时候执行的方法,配置 destroy-method作为 Bean 的销毁的时候执行的方法。
销毁方法想要执行,需要是单例创建的 Bean 而且在工厂关闭的时候,Bean 才会被销毁.
Spring生成Bean有三种方式
<!-- 方式一:无参数的构造方法的实例化 -->
<bean id="bean1" class="cn.itcast.spring.demo3.Bean1"></bean>
<!-- 方式二:静态工厂实例化 Bean -->
<bean id="bean2" class="cn.itcast.spring.demo3.Bean2Factory"
factory-method="getBean2"/>
这种方式有一个工厂类
public class Bean2Factory {
public static Bean2 getBean2(){
return new Bean2();
} }
<!-- 方式三:实例工厂实例化 Bean -->
<bean id="bean3Factory" class="cn.itcast.spring.demo3.Bean3Factory"></bean>
<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>
提供 Bean3 的实例工厂:
public class Bean3Factory {
public Bean3 getBean3(){
return new Bean3(); }}
Spring 的 Bean 的属性注入:
<!-- 第一种:构造方法的方式 -->
<bean id="car" class="cn.itcast.spring.demo4.Car">
<constructor-arg name="name" value="保时捷"/>
<constructor-arg name="price" value="1000000"/>
</bean>
<!-- 第二种:set 方法的方式 -->
<bean id="car2" class="cn.itcast.spring.demo4.Car2">
<property name="name" value="奇瑞QQ"/>
<property name="price" value="40000"/>
</bean>
<!-- 注入对象类型的属性 -->
<bean id="person" class="cn.itcast.spring.demo4.Person">
<property name="name" value="会希"/>
<!-- ref 属性:引用另一个 bean 的 id 或 name -->
<property name="car2" ref="car2"/>
</bean>
评论