刚学spring。有一些很弱的问题在这里做以记录。
一、在myeclipse下spring框架的工程中如何添加依赖包的源码。
工程目录如下:
要添加依赖包的源码应该在Referenced Libraries中,而不是在Junit4中,Jnuit4只是一个插件。两者中的类打开后区别如下:
Referenced Libraries下的类打开后如为关联源码 则右侧有一个Attach Source..按钮:
而Junit4插件下的类打开后右侧没有Attach Source..的按钮,也无法关联源码。也无需关联源码。
点击Attach Source..按钮后添加所需Jar包的源码。每一个依赖Jar包都有三部分组成如图:
我们引用你依赖包时选择的都是第一个Relese.Jar。添加源码时则选择相应的Source.jar即可。
二、ApplicationContext.xml中如何设置bean.
总的来说bean的结构与类的结构是一致的,什么类需要设置bean。什么类不需要设置bean呢。一般情况下,我们都是对dao层和service层的类设置bean。因为他们基本上在工程中都是单例的(这里只讨论单例模式。多利模式还需进一步学习跟总结),即是说dao层的类或者service层的类只要实例化一个,就能够满足需求,因为dao层做的是数据库访问的操作,service层做的是业务逻辑的操作,他们只需要实例化一次。上例中dao层有两个实现类,service层中有一个实现类如下:
根据他们的类结构我们配置ApplicationContext.xml如下:
bean的内部结构与class的内部结构相同,class中两个dao的impl类中都有一个dataSource对象用来连接数据库,因此在bean中也设置类相应的dataSource。ref中的dataSource也是在ApplicationContext.xml中设置的bean用来连接数据库如图:
而Servcie的实现类中只有dao对象。因此在service的bean中也配置了两个dao的bean。这样在工程启动时加载applicationcontext.xml时就会实例化这些bean对应的类对象,供工程使用。
比如在test类中需要使用有一个service的私有对象。如图:
那么如果要想使上图中的userService实例化,就要在它的上面用注解标注@Autowried那么myeclipse就会根据userService的类型去applicationContext.xml中去匹配对应的bean并把类型相匹配的bean的实例赋给他。如果匹配失败则userService为null。
或者用注解@Resource也可以达到同样的效果,但是@Resource(value="orderDao")将先用value中的名称去bean中匹配。如果名称匹配不成功才会用类型区匹配。