`
8366
  • 浏览: 813312 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

第14讲 --让Spring自动扫描和管理Bean

阅读更多

 

 

通过在classpath自动扫描方式把组件纳入spring容器中管理
 
 
前面的例子我们都是使用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泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
 
 
目前的spring 只是区分了以上注解,但是在底层没有具体实现上的区分
 
验证步骤:
 
(1) 修改beans.xml
<?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">
       


        
     <!-- 扫描 cn.com.xinli包下以及子包种有 @Service @Controller @Repository @Component
          注解的类,一旦发现,则将其纳入到spring容器中管理
     -->
	<context:component-scan base-package="cn.com.xinli"></context:component-scan>

</beans>

 
(2) 给两个类加上   @Service  注解 PersionDaoBean 和 PersionServiceBean
 
(3) 写测试方法,由于我们使用的spring的自动扫描 注入bean,在等到bean的时候,就无法知道bean的名字,这里有一个默认的规则,就是你要得到的bean的名字就是你注解的类的 类名第一个字符小写

 

 

ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
		PersionSevice ps=(PersionSevice)ctx.getBean("persionServiceBean");
		PersionDao pd=(PersionDao)ctx.getBean("persionDaoBean");
		System.out.println(ps);
		System.out.println(pd);

 

  

 
(4) 结果:
可见两个bean都被注入值了
注意:
a.我们也可以在注解中指定 bean的名字,以后根据注解指定名字得到bean  @Service("huxl")

b.我们也可以在注解中指定bean的 生成方式,默认是 单例 ,我们可以指定为 原型 @Service("huxl") @Scope("propotype")

c.也可以使用注解指定bean的初始化和销毁方法

 

                @PostConstruct
	public void init()
	{
		log.info("初始化资源");
	}
	@PreDestroy
	public void destory()
	{
		log.info("释放资源");
	}

 


 

 

 
分享到:
评论

相关推荐

    spring2.5学习PPT 传智博客

    - 自动扫描和管理Bean,通过@Component、@Service、@Repository和@Controller注解定义Bean。 15-20. **AOP(面向切面编程)** - AOP用于解耦关注点,例如日志、事务管理等。 - JDK动态代理和CGLIB实现AOP代理。 ...

    跟我学spring3(8-13)

    3. **12.3 注解实现Bean定义**:使用@Configuration和@Bean注解,可以在Java类中定义和管理Bean,替代XML配置。 4. **12.4 基于Java类定义Bean配置元数据**:详细介绍了如何通过JavaConfig来定义Spring的配置,包括...

    Spring Boot 学习笔记完整教程.docx

    Spring Boot 是一个基于 Spring 框架的快速开发工具,它简化了初始化、配置和运行新项目的流程。这个学习笔记的完整教程将涵盖多个关键领域,帮助开发者深入理解和使用 Spring Boot。 1. **Spring Boot 教程** - *...

    《spring+mybatis 企业应用实战》源码、类库全资料

    Spring 和 MyBatis 集成后,可以发挥各自的优势,Spring 负责业务逻辑的组织和管理,MyBatis 负责数据的CRUD操作。通常,我们会使用 Spring 的 DataSource、TransactionManager 配合 MyBatis 进行数据访问,实现事务...

    动力节点老杜最新版Spring6框架教程学习资料分享

    本套Spring教程基于...第十一点:Bean生命周期10步讲解法,其他视频最多讲7步。 通过本套教程的学习,可以让你不仅会使用Spring框架,还会让你精通框架底层原理。无论面试也好,实际开发也好,都会有极大的帮助。

    Spring中文帮助文档

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知...

    Spring API

    2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件...

    Spring攻略(第二版 中文高清版).part1

    第14章 Spring Portlet MVC框架 544 14.1 用Spring Portlet MVC开发一个简单的Portlet 544 14.1.1 问题 544 14.1.2 解决方案 545 14.1.3 工作原理 546 14.2 将Portlet请求映射到处理程序 553 14.2.1 ...

    Spring攻略(第二版 中文高清版).part2

    第14章 Spring Portlet MVC框架 544 14.1 用Spring Portlet MVC开发一个简单的Portlet 544 14.1.1 问题 544 14.1.2 解决方案 545 14.1.3 工作原理 546 14.2 将Portlet请求映射到处理程序 553 14.2.1 ...

    Spring Boot 中文文档.pdf

    - **监控和管理**:Spring Boot提供了Actuator模块,可以方便地对应用进行监控和管理,包括健康检查、度量指标收集等功能。 #### 7. 高级内容 - **自定义配置**:虽然Spring Boot提供了丰富的默认配置,但开发者也...

    千锋最新版spring6.0框架GA版详解.pdf

    通过Spring Boot自动配置功能,无需显式定义配置类,即可自动扫描和装配bean。 3. **使用注解方式注入** 使用@Autowired、@Resource等注解进行依赖注入。 4. **注解开发管理第三方bean** 通过@ComponentScan...

    SpringBoot学习笔记完整教程

    学习如何在非 Spring 管理的组件中获取和使用 Spring 管理的 Bean。 13. **使用模板引擎**:Spring Boot 支持多种模板引擎,如 Thymeleaf、Freemarker 等,用于动态生成 HTML。理解如何配置模板引擎,以及如何在...

    互联网创意产品众筹平台

    问题一箩筐-扫描包,以及spring配置文件标签报错) h5 O# v1 e1 U# N │ 4.问题一箩筐-jdbc.properties属性文件设置错误,无法连接数据库, Q) {; h4 t( ?: r& ^ │ 5.问题一箩筐-关于url扩展名称问题 │ 6.问题一箩筐-...

    mybatis+springmvc配置

    第十四步:SpringMVC控制器 Controller是SpringMVC中的组件,处理HTTP请求,调用服务层方法,返回视图或模型数据。 第十五步:页面设计 使用JSP(JavaServer Pages)设计基本页面,如index.jsp、list.jsp、show.jsp...

    十四、商城 - 商城架构-SSM(2)1.youlexuan.zip

    【标题】"十四、商城 - 商城架构-SSM(2)1.youlexuan.zip" 暗示了这是一个关于构建电子商务平台的教程,主要使用了Spring、SpringMVC和MyBatis(简称SSM)这三大Java Web开发框架。在本教程中,我们将深入探讨如何...

    专高2_练习手册_高性能架构_第20单元2

    12. **BeanFactory**: BeanFactory是Spring的核心容器,实现了工厂模式,负责创建和管理Bean。ApplicationContext是BeanFactory的子接口,提供了更多的企业级功能,如国际化、事件传播等。 13. **Java线程状态**: ...

    java微信公众号MVC开发框架

    jwx是开源的java公众号开发MVC框架,基于spring配置文件和微信消息或事件注解,通过微信上下文处理一个或多个微信公众号服务请求。目的主要有两个,其一生封装微信请求xml消息为java实体对象,将返回对象转换为xml...

    java软件工程师面试基本题.docx

    - **注解**:如`@Autowired`用于自动装配依赖对象,`@Component`、`@Service`和`@Repository`用于标注Bean的类别。 **面向切面编程**(Aspect Oriented Programming,简称AOP)是Spring提供的另一种强大的功能,它...

Global site tag (gtag.js) - Google Analytics