发表于: 2017-08-15 23:41:42

2 1149


今天完成的事

运行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



返回列表 返回列表
评论

    分享到