`

Spring自动扫描和管理Bean

阅读更多

在使用beans.xml文件配置容器管理的bean时,即使使用了注解方式来对bean属性进行装配的情况下,如果容器需要管理的bean太多,也会造成beans.xml文件的臃肿,所以spring提供了自动扫描及管理bean的方法。

 

要使用自动扫描功能,需要在配置文件中加入以下代码:

Java代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>     
  2. <beans xmlns="http://www.springframework.org/schema/beans"     
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     
  4.     <!-- 引入 context 命名空间 -->     
  5.     xmlns:context = "http://www.springframework.org/schema/context"     
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans      
  7. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd      
  8.     <!-- 加入 context scheme文件 -->     
  9.     http://www.springframework.org/schema/context      
  10. http://www.springframework.org/schema/context/spring-context-3.0.xsd">     
  11.        <!-- 打开自动扫描功能 自动扫描功能已经提供了注解功能所需要的处理器,所以不再需要配置打开注解功能(<context:annotation-config/>) -->   
  12.        <context:component-scan base-package="com.risetek"/>    
  13.        ......      
  14. </beans>  
<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    <!-- 引入 context 命名空间 -->  
    xmlns:context = "http://www.springframework.org/schema/context"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans   
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
    <!-- 加入 context scheme文件 -->  
    http://www.springframework.org/schema/context   
http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
       <!-- 打开自动扫描功能 自动扫描功能已经提供了注解功能所需要的处理器,所以不再需要配置打开注解功能(<context:annotation-config/>) -->
       <context:component-scan base-package="com.risetek"/> 
       ......   
</beans>

 经过上述配置后,在spring容器实例化的时候,容器会自动扫描“com.risetek”包下的所有类,我们只要在需要被容器管理的类上加上一个注解,容器就会将该类纳入容器进行管理了,而表示该类需要被容器管理的注解有以下几种:

   @Component :表示该类是一个通用的Bean
   @Service :表示该类是一个服务层的Bean
   @Controller :表示该类是一个控制层的Bean
   @Repository :表示该类是一个数据访问层的Bean

以上四种形式的注解都将会告诉spring容器,该类需要被容器管理,目前版本的spring对四种注解类型并没有做特殊的处理,四种注解的使用效果都是一样

 

下面以@Componet为例,如何使用注解标识需要被管理的类:

    PersonDaoImpl.java

Java代码 复制代码 收藏代码
  1. //括号中的字符串表明该类在容器中的名称,如果不指定名称,则容器中的名称则为该类的简单名称(类名第一个字母小写)   
  2. @Component(“personDao”)   
  3. public class PersonDaoImpl implements PersonDao {   
  4.     ....   
  5. }  
//括号中的字符串表明该类在容器中的名称,如果不指定名称,则容器中的名称则为该类的简单名称(类名第一个字母小写)
@Component(“personDao”)
public class PersonDaoImpl implements PersonDao {
    ....
}

   PersonServiceBean.java

Java代码 复制代码 收藏代码
  1. @Component  
  2. public class PersonServiceBean implements PersonService {   
  3.     //为属性按名称进行装配   
  4.   
  5.     @Resource(name="personDao")   
  6.     private PersonDao personDao;   
  7. }  
@Component
public class PersonServiceBean implements PersonService {
    //为属性按名称进行装配

	@Resource(name="personDao")
	private PersonDao personDao;
}

 经过配置@Component注解,就将PersonServiceBean和PersonDaoImpl类交给了spring容器管理,在从容器中获取PersonServiceBean实例的时候,容器也会自动将PersonServiceBean中的属性按照@Resource注解方式进行装配。

 

同样也可以通过注解方式设置Bean类的作用域以及初始化、销毁方法

Java代码 复制代码 收藏代码
  1. @Component  
  2. @Scope("prototype")   
  3. public class PersonServiceBean implements PersonService {   
  4.   
  5.     @Resource  
  6.     private PersonDao personDao;   
  7.   
  8.     public PersonServiceBean(){   
  9.         System.out.println("PersonServiceBean....");   
  10.     }   
  11.        
  12.     //此方法会在构造方法执行之后执行   
  13.     @PostConstruct  
  14.     public void init() {   
  15.         System.out.println("init...");   
  16.     }   
  17.        
  18.     //此方法会在对象销毁之前执行   
  19.     @PreDestroy  
  20.     public void destory(){   
  21.         System.out.println("destory...");   
  22.     }   
  23. }  
分享到:
评论

相关推荐

    spring自动扫描和管理Bean的示例

    通过分析这个示例,你可以更好地理解Spring自动扫描和管理Bean的工作原理,以及如何在实际项目中应用这些概念。 总结起来,Spring的自动扫描和管理Bean功能是通过组件扫描和注解驱动配置实现的,这大大减少了手动...

    Spring学习笔记(9)----让Spring自动扫描和管理Bean

    Spring自动扫描的Bean同样遵循Spring的生命周期管理。这包括初始化方法、销毁方法、以及基于回调的生命周期处理。例如,你可以使用`@PostConstruct`和`@PreDestroy`注解来标识初始化和销毁方法。 ### **其他注解** ...

    Spring自动扫描无法扫描jar包中bean的解决方法

    在Spring框架中,自动扫描(Auto-Component Discovery)是一个便捷的功能,它允许开发者无需显式配置每个Bean,而是通过指定包名让Spring自动发现并管理Bean。然而,当Bean定义在独立的jar包中,有时Spring可能无法...

    spring 2.5 IOC 自动扫描,自动注入

    在Spring框架中,IOC(Inversion of Control,控制反转)是一种设计模式,它将对象的创建和管理交给了框架,从而让开发者更专注于业务逻辑。而自动扫描和自动注入是Spring 2.5中实现IOC的两个核心特性,极大地简化了...

    Spring通过在classpath自动扫描方式把组件纳入spring容器中管理

    Spring自动扫描机制主要涉及以下几个关键概念: 1. **@Component**: 这是最基本的组件注解,可以标记在任何业务逻辑类上。Spring会将这些类视为bean并纳入管理。如果你需要更具体地表示某种类型的组件,可以使用它...

    Spring定义bean的三种方式和自动注入

    在Spring框架中,管理Bean的方式主要有三种:XML...总之,Spring提供了多种方式来定义和管理Bean,从XML到注解再到Java配置,使得开发更加灵活高效。同时,自动注入功能大大简化了依赖关系的建立,降低了代码耦合度。

    Spring mvc portlet demo

    - 注解配置:通过在类上使用`@Component`,方法上使用`@Autowired`等注解,让Spring自动扫描和管理bean。 **sample_BookCatalog** 这个文件可能是一个示例的书目目录portlet,它展示了如何在Spring MVC Portlet中...

    spring入门

    这些注解帮助Spring自动扫描和管理bean。 4. **注解驱动开发(Annotation-based Development)**:随着Spring的发展,越来越多的功能可以通过注解实现,减少了XML配置的需求。例如,@Autowired用于自动装配bean的...

    17. Spring Boot普通类调用bean【从零开始学Spring Boot】

    这是Spring提供的接口,用于获取bean和管理bean的生命周期。你可以通过实现ApplicationContextAware接口,或者直接在代码中创建ApplicationContext实例来访问bean。 5. **非Spring管理类调用bean**: 在非Spring...

    Spring2.5 自动扫描classpath

    5. **Spring_demo_03_autowire** - 自动装配(Autowiring)是Spring自动扫描classpath的核心特性,它能根据类型或名称自动为bean注入依赖。 6. **Spring_demo_08_autowired_qualifier** - @Autowired注解配合@...

    spring bean life cycle

    `@Component`注解的类会自动被Spring扫描并注册为Bean,而`@Configuration`类则提供了更高级别的配置方式,可以替代XML配置文件。 此外,Spring提供了一种名为BeanPostProcessor的接口,它允许我们自定义Bean实例化...

    Spring的自动扫描注入.docx

    在 Spring 2.5 中,引入了组件自动扫描机制,该机制可以在类路径下寻找标注了 @Component、@Service、@Controller、@Repository 注解的类,并将这些类纳入 Spring 容器中管理。 @Component、@Repository、@Service...

    spring管理bean应用实例代码

    在Spring框架中,Bean管理是核心功能之一,它允许开发者通过声明式的方式配置和管理对象。这个压缩包文件“spring管理bean应用实例代码”显然包含了关于如何在Spring中配置和使用Bean的示例代码。接下来,我们将深入...

    ssm跳转简易项目000000

    在项目中,我们可能能看到XML配置文件(如applicationContext.xml),用于定义bean及其依赖关系,或者看到基于注解的配置,如@Service、@Repository、@Controller等,这些注解帮助Spring自动扫描和管理bean。...

    Spring中与Bean相关的接口

    它是Spring中最基本的Bean容器,负责创建、配置和管理Bean。`BeanFactory`提供了一个延迟初始化Bean的能力,这意味着Bean只在真正被请求时才会被实例化,这有助于提高应用的启动速度。例如,当使用`XmlBeanFactory`...

    spring包扫描配置的项目

    在Spring框架中,包扫描(Package Scanning)是一项核心功能,它允许我们在应用程序上下文中自动检测和注册bean定义。这个过程极大地简化了依赖注入和组件配置。本项目以"spring包扫描配置"为主题,旨在通过一个简单...

    spring注解开发--Bean加载控制.zip

    在Spring框架中,注解开发已经成为了主流,极大地简化了配置和bean的管理。本教程主要探讨的是如何在Spring中通过注解来控制Bean的加载,以实现更加灵活的依赖注入和应用程序控制。我们将深入理解以下几个核心概念:...

Global site tag (gtag.js) - Google Analytics