`

九 自动扫描和管理bean

 
阅读更多
九 自动扫描和管理bean

前面的例子我们都是使用XML的bean定义来配置组件。在一个稍大的项目中,通常会有上百个组件,如果这些这组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找及维护起来也不太方便。spring2.5为我们引入了组件自动扫描机制,他可以在类路径底下寻找标注了@Component、@Service、@Controller、@Repository注解的类,并把这些类纳入进spring容器中管理。它的作用和在xml文件中使用bean节点配置组件是一样的。要使用自动扫描机制,我们需要打开以下配置信息:
<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="cn.itcast"/>
</beans>
其中base-package为需要扫描的包(含子包)。

@Service用于标注业务层组件、 @Controller用于标注控制层组件(如struts中的action)、@Repository用于标注数据访问组件,即DAO组件。而@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。



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

其中base-package为需要扫描的包(含子包) 

@Service用于标注业务层组件,@Controller用于标注控制层组件(如struts中的action),@Repository用于标注数据访问组件,即DAO组件,而@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

 

bean的默认名称是类名,然后把第一个字母改为小写。可以通过@Service("xxx")修改bean名称。

 

这种bean默认是单例的,如果想改变,可以使用@Service(“aaaaa”) @Scope(“prototype”)来改变。


还可以通过@PostConstruct @PreDestroy设置初始化和销毁的函数


view plaincopy to clipboardprint?
01.@PostConstruct  
02. public void init(){   
03.  System.out.println("初始化");   
04. }   
05.  
06.  
07.  
08.@PreDestroy  
09. public void destory(){   
10.  System.out.println("开闭资源");   
11. }  


完整的配置文件
<?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="cn.itcast"/>
</beans>
<context:annotation-config/>这个注解为什么没有配置在里面呢
这个配置只是做依赖注入的注释的配置 用了<context:component-scan base-package="cn.itcast"/>这个配置后
会自动把依赖注入的配置在spring内部给配置上


end 完毕!

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics