您的位置:首页 > 编程语言 > Java开发

Spring2.5学习3.4_让Spring自动扫描和管理Bean

2015-06-03 21:45 549 查看
通过在类路径下,根据自动扫描方式,把组件纳入Spring容器管理。

如果这些组件采用xml的bean定义来进行配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。Spring2.5引入了组件自动扫描机制,它可以在类路径下寻找标注了@Component,@Service,@Controrl,@Respository注解的类,并把这些类纳入Spring容器管理,它的作用和xml文件中bean节点的配置是一样的,要使用自动扫描机制,我们需要打开以下配置信息:

[html] view
plaincopy

<?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:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">



<context:component-scan base-package="xjj.test"/>

</beans>

<context:component-scan base-package="xjj.test"/>,说明Spring要扫描那个包下的bean,这里包含基包下的所有子包中的类。扫描这些类后,那么Spring怎么知道,哪些类要交给Spring容器来管理呢,这时候我们用到了注解,就是寻找标注了这些注解@Component,@Service,@Controrl,@Respository的类,当在类中发现了这些标记,Spring就会认为你要把这些类交给他来管理。

类上面添加的这些标记,就相当于配置文件中的bean节点。

@Service:用来标记业务层对象;

@Controrl:标注控制层,相当于Struts2中的action;

@Respository:用来标记数据引用对象(dao组件);

@Component:在项目中,有些组件归在以上三层都不像的时候,用着的泛指的组件。

目前,使用这四个注解都是一样,Spring还没有做相关区分,以后可能会有特殊处理。

通过注解标注的对象,在用getBean("beanName")获取时,默认将类型首字母小写后作为bean名称。

用@Service 注解,PersonService personService = (PersonService)ctx.getBean("personServiceBean");

使用的是实现类的名字,而不是接口类。

那默认值可以改吗?当然可以。

用@Service("personService")注解后,就可以用PersonService personService = (PersonService)ctx.getBean("personService");

注:默认是单例,如果需要改成原型,就要加@scope注解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: