您当前的位置: 首页 >  spring

wespten

暂无认证

  • 1浏览

    0关注

    899博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

spring注解注入和context:component-scan

wespten 发布时间:2018-10-05 14:03:02 ,浏览量:1

  一、spring注解

@Service告诉spring容器,这是一个Service类,标识持久层Bean组件,默认情况会自动加载它到spring容器中。 @Autowried注解告诉spring,这个字段需要自动注入 @Scope指定此spring bean的scope是单例 @Repository注解指定此类是一个容器类,是DA层类的实现。标识持久层Bean组件 @Componet:基本注解,标识一个受Spring管理的Bean组件 @Controller:标识表现层Bean组件 

二、context.component-scan节点

 通常情况下我们在创建spring项目的时候在xml配置文件中都会配置这个标签,配置完这个标签后,spring就会去自动扫描base-package对应的路径或者该路径的子包下面的java文件,如果扫描到文件中带有@Service,@Component,@Repository,@Controller等这些注解的类,则把这些类注册为bean






	
	
	  
	
		
			
				/WEB-INF/hibernate.properties
				/WEB-INF/uploadDir.properties
			
		
	

      

                    

        

此时指定的include-filter没有起到作用,只要把use-default-filter设置成false就可以了。这样就可以避免在base-packeage配置多个包名来解决这个问题了。

这个文件中beans根节点下只有一个context:component-scan节点,此节点有两个属性base-package属性告诉spring要扫描的包,use-default-filters=”false”表示不要使用默认的过滤器,此处的默认过滤器,会扫描包含@Service,@Component,@Repository,@Controller注解修饰的类,use-default-filters属性的默认值为true,这就意味着会扫描指定包下标有@Service,@Component,@Repository,@Controller的注解的全部类,并注册成bean。 所以如果仅仅是在配置文件中写 Use-default-filter此时为true时,那么会对base-package包或者子包下所有的java类进行扫描,并把匹配的java类注册成bean。

所以这用情况下可以发现扫描的力度还是挺大的,但是如果你只想扫描指定包下面的Controller,那该怎么办?此时子标签就可以发挥作用了。

这样就会只扫描base-package指定下的有@Controller下的Java类,并注册成bean。

 

 

 

 

 

 

 

 

 

 

 

 

关注
打赏
1665965058
查看更多评论
立即登录/注册

微信扫码登录

0.0381s