发表于: 2017-09-08 23:20:01

3 768


今天完成的任务:

1.       今天准备结束spring的任务,做了好多天了,感觉不能再停在这一步了,今天主要分析spring其中的配置文件。

主要对bean进行生产,依赖注入,实例分发。applicationContext文件是Spring默认的配置文件。

Bean的元数据信息:

Bean实现类

Bean的属性信息:数据源的连接,用户名密码等。

Bean的依赖关系。

Bean的行为配置:生命周期等。

Bean的创建方式:通过构造还是创建工厂来实现。

过程:bean配置信息定义bean的实现和依赖关系-----Spring建立bean的注册表----根据注册表加载实例化bean-----放入缓存池-------外部程序调用。

Bean的命名方式示例:

   1.<bean class=”…”/> //全限定类的命名。

例子:<bean class=”com.service.HelloWordImpl”/>

调用:public static void sayHelloWordByClass(){

HelloWord helloWord= beanFactory.getBean(HelloWordImpl.class) }

  2.<bean id =”bean1”  class=”…”></bean> //通过指令id来实现对bean的命名。

例子: <bean id=”helloWord” class=”com.service.HelloWordImpl”/>

调用:public static void sayHelloWordById(){

HelloWord helloWord= beanFactory.getBean(“helloWord”,HelloWord.class)}

  3.<bean name =”bean2”  class=”…”></bean> //name字符没有限制,可以使用特殊字符

例子:<bean id=”helloWord” class=”com.service.HelloWordImpl”/>

调用:public static void sayHelloWordByName(){

HelloWord helloWord= beanFactory.getBean(“helloWord”,HelloWord.class)}

4.<bean name=”bean3” class=”…”/>

   <alias alias=”alias1” name=”bean3”/>

例子:<bean name=”helloWord” class=”com.service.HelloWordImpl”/>

<alias alias=”alias1” name=”helloWord”/>

调用:public static void sayHelloWordByAlias(){

HelloWord helloWord = beanFactory.getBean(“alias”,HelloWord.class)}//bean2起一个别名,叫做bean3

Bean的作用域,即scope的定义

    Singleton <bean id=”helloword” class=”com.service.HellpWorldImpl” scope=”singleton”></bean>

   是bean只管理一个共享的实例,每次都会引用返回给调用者,并且spring将会对bean进行后续的生命管理。

    prototype <bean id=”helloword” class=”com.service.HellpWorldImpl” scope=”peototype”></bean>

   是在每次对bean请求时都会创建一个实例,不需要收到其他对象影响。但是这样可能会不太安全。并且spring不会后续管理新建的实例。

 Spring中整合配置文件

 在大型的Spring项目中如果有多个配置文件,就需要加载多个配置文件,比如:

ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"classpath:spring.xml","spring-mybatis.xml"”mybatis.xml”});

 但是这样不方便管理以及查看。所以在Spring中可以专门使用一个配置文件来存这些xml文件。比如:

spring-ALL.xml

<beans>

<import resource =” spring.xml”>

<import resource =” spring-mybatis.xml”>

<import resource =” mybatis.xml”>

</beans>

   调用:ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"spring-ALL.xml"});

使用bean注入的小例子。

 1.新建一个项目目录如图

  2.       创建HelloWord接口(interface文件)

  3.  创建HelloWordImpl实例

    4注入bean的配置文件conf.xml

    5.Main方法

    6.运行。

    7.工作流程:在main函数中加载配置文件,启动springIOC;获取helloword实例;输出信息。具体是:使用ClassPathXmlApplicationContext来加载配置文件,使用beanfactory来获取实例,最后输出。

2.完成了springmybatis的配置!!!

代码太多了,不准备贴,然后参考网上的一个例子,写的还是比较详细,但是其中我不知道为什么缺少一个userService的注入bean。所以需要添加在spring-mybatis.xml中:

</bean>
    <
bean id="userService" class="UserService的地址">
    </
bean>

   http://www.cnblogs.com/xdp-gacl/p/4271627.html

然后说一下自己的理解和感受,这两天一直在配置springmybatis的整合,中间碰到了很多问题,大多数都是Failed to load ApplicationContext

原因可能是:

1缺少需要的依赖

2找不到.Xml文件(有的是因为路径写的有问题。)

3找不到接口(有的是因为没有在配置文件中将其实例化)

所以解决办法是:

1.查看import是否有报错,然后添加依赖。

2.查看文件的路径是否都正确。尤其是mapper的命名空间

3.查看配置文件中是否有缺少bean实例化。

4.学会看报错的内容还是很重要的,虽然看起来很多但是确实可以找到大概的位置。

放一张运行成功的图。。。哎嘿嘿。

明天计划:

1.明天计划将spring这一块做个总结,然后对配置文件继续学习,争取可以清楚的讲出来。

2.对于Spring+mybatis找了很多例子,但是只实现了一个,明天试试能不能把其他的也跑通。

3.对于java和数据库基础的学习。

遇到问题:

问题都出在配置和运行里面,然后百度+师兄帮忙终于解决了。 

收获:

  配置好了Springmybatis

  学习了配置文件的内容,主要是bean。如何命名bean,如何实例化。 


返回列表 返回列表
评论

    分享到