发表于: 2017-08-15 23:41:42
2 1148
今天完成的事
运行TestSpring演示如何用Spring获取一个对象
主要体验操作步骤
1.首先配置pom文件
在中央仓库中寻找需要配置的jar包,粘贴到 <dependencies>下方
例如
Maven仓库搜索地址:https://mvnrepository.com/artifact/org.mybatis/mybatis-spring/1.3.0
配置完成之后发现中,出现了所需要的jar包
之后创建POJO
/**
* Created by yaheng on 2017/8/15.
*/
public class Category {
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
private int id;
private String name;
}
新建applicationContext.xml文件
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean name="c" class="POJO.Category">
<property name="name" value="category 1" />
</bean>
</beans>
之后创建TestSpring
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());
}
}
运行后成功打印 category 1
我理解到的:本次体验主要就是体会Spring的易于测试和解耦,从POJO中和Testspring中的代码就可以轻松看出,两者之前是通过applicationContext.xml文件进行“交流”,而IOC全程接管了两者之间的资源传递(将value="category 1"注入给了Testspring),程序员只简单配置了XML文件,从创建引用代码中脱离了出来,这两个类之间的联系完全被被IOC中介,完全没有联系,耦合为0
学习理解Bean
IOC管理的那些组成我们使用的对象就叫做Bean,Bean是由Spring容器初始化,装配管理的对象,除此之外和应用程序中的其他对象并无区别
Bean的配置
Spring IoC容器目的就是管理Bean,这些Bean将根据配置文件中的Bean定义进行创建,而Bean定义在容器内部由BeanDefinition对象表示,该定义主要包含以下信息:
●全限定类名(FQN):用于定义Bean的实现类;
●Bean行为定义:这些定义了Bean在容器中的行为;包括作用域(单例、原型创建)、是否惰性初始化及生命周期等;
●Bean创建方式定义:说明是通过构造器还是工厂方法创建Bean;
●Bean之间关系定义:即对其他bean的引用,也就是依赖关系定义,这些引用bean也可以称之为同事bean 或依赖bean,也就是依赖注入。
Bean定义只有“全限定类名”在当使用构造器或静态工厂方法进行实例化bean时是必须的,其他都是可选的定义。难道Spring只能通过配置方式来创建Bean吗?回答当然不是,某些SingletonBeanRegistry接口实现类实现也允许将那些非BeanFactory创建的、已有的用户对象注册到容器中,这些对象必须是共享的,比如使用DefaultListableBeanFactory 的registerSingleton() 方法。不过建议采用元数据定义。
这一部分不太理解,先贴上来,明天再根据网上其他讲解Bean配置的文章理解一下
明天的计划
继续对Spring有关Bean的理解学习,之后接着往下学习
疯狂讲义面向对象部分
小课堂的课题确定下来和相关准备
遇到的问题
TestSpring运行报错,修改applicationContext.xml 中 <bean name="c" class="POJO.Category">解决
看文章有一部分比较新的概念和代码不太理解,明天换一个作者的文章看有没有新的说法
收获:第1次感受到了IOC容器带来的便利,理解了Spring的运行流程,初步掌握pom文件的配置
任务进度:任务1,步骤19
任务开始时间:2017-8-15
预定任务1结束时间:2017-8-20
有延期风险
解决方案:提高学习效率,难点寻求师兄帮助
禅道地址 http://task.ptteng.com/zentao/project-task-276-unclosed.html
评论