`
hahalzb
  • 浏览: 166130 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring2.5 自动扫描classpath

阅读更多
在spring中我们通过在xml中定义bean来配置组件。如果项目中的组件比较多,如果采用在xml文件中来定义这些bean,那么xml配置文件的体积就会越来越大。虽然可以使用 annotation 来进行注入,维护bean之间的依赖关系,不必在xml中进行配置,少了依赖关系的配置,但bean还是以要在xml中定义,这样xml文件依然是一种增量式的配置
     spring2.5引入了组件自动扫描的机制,可以采用在classpath自动扫描方式把classpath中所有的组件都纳入到spring 容器来进行管理。但是这些类需要使用使用 @Service,@Controller, @Repository 这几个注解。它的作用与在xml文件中使用bean节点配置组件式一样的。
  ·@Service用于标注业务层组件
  ·@Controller用于标注控制层组件,比如struts中的action
  ·@Repository用于标注数据访问组件,如DAO组件
  ·@Component泛指组件,当组件不好归类的时候,我们可以使用它进行标注

   要完成自动扫描,我们好需要在xml配置中引入以下信息:
a) context命名空间以及这个命名空间的schema文件
b) <context:component-scan base-package=”com.wq” />  打开组件扫描配置项base-package表示自动扫描com.wq包以及它的子包。



<context:annotation-config /> 可以不必打开,因为<context:component-scan>完成了annotation处理的注册
com.wq.dao.UserDAO.java
//userDAO是这个bean在spring容器中的ID号
//如果不写,则默认为类名,将类名的首字母小写
@Repository("userDAO")
public class UserDAO {
    public String[] findUsers(){
        return new String[]{"张三","李四","王五"};
    }
}

com.wq.serviceUserService.java
//userService是这个bean在spring容器中的ID号
//如果不写,则默认为类名,将类名的首字母小写
@Service("userService")
public class UserService {
   
    private UserDAO userDao;
 
    public UserDAO getUserDao() {
        return userDao;
    }
 
    @Resource(name="userDAO")
    public void setUserDao(UserDAO userDao) {
        this.userDao = userDao;
    }
    public String[] getAllUser(){
        return userDao.findUsers();
    }
   
}

运行测试类,与前面使用xml配置文件效果是一样的。这样我们就再也不用在xml文件中配置bean了,xml文件也不是一种增量配置。
public static void main(String[] args) {
  ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
  UserService userService=(UserService) ctx.getBean("userService");
  String[] users=userService.getAllUser();
  for (String user : users) {
   System.out.println(user);
  }
 }

  • 大小: 41.5 KB
分享到:
评论
1 楼 hahalzb 2010-06-13  
http://www.ibm.com/developerworks/cn/java/j-lo-spring25-ioc/
这篇讲得很不错~

相关推荐

    Spring 2.5 AOP 例子

    在Spring 2.5中,引入了类路径扫描(ClassPath Scanning)功能,这使得我们可以自动发现和注册bean。无需在XML配置文件中显式声明每一个bean,只需指定基础包名,Spring会自动搜索包及其子包下的所有@Component、@...

    spring 2.5 注解

    4. **自动扫描和组件探测**:Spring 2.5可以自动检测classpath中的Spring组件(带有特定注解的类)。这使得开发者无需显式地在XML配置中声明每个bean,而是由Spring自动识别和管理。 5. **Web层的新特性**:Spring ...

    spring2.5的applicationContext配置文件

    3. **自动扫描**:Spring 2.5支持`&lt;context:component-scan&gt;`标签,自动发现和注册带有特定注解(如@Service、@Repository、@Controller)的bean,降低了XML配置的工作量。 4. **Java配置**:虽然本例中仅提及XML...

    struts hibernate spring 集成时使用依赖注解的方式的秘籍

    //applicationContext.xml文件中添加 &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...-- 开启classpath扫描 --&gt; &lt;context:component-scan base-package="com.haijian" /&gt;

    Spring教材

    - **classpath自动搜索组件** 自动组件扫描功能允许Spring容器在类路径下查找标记了特定注解的类,自动注册为bean,进一步减少了手动配置的工作量。 2. 面向切面编程(Aspect-Oriented Programming, AOP) AOP是...

    Spring中文帮助文档

    2.2.5. 在classpath中自动搜索组件 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.3.3. 对bean命名pointcut( bean name pointcut element)的支持 2.3.4. 对AspectJ装载...

    spring_MVC源码

    -- 自动扫描所有注解该路径 --&gt; 14. 15. &lt;context:property-placeholder location="classpath:/hibernate.properties" /&gt; 16. 17. 18. class="org.springframework.orm.hibernate3.annotation....

    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中自动搜索组件...

    Spring5.0中文开发手册

    - **3.9.9 ClassPath扫描和管理组件** - 如何使用@ComponentScan注解进行类路径扫描,自动发现和注册组件。 - **3.9.10 使用过滤器自定义扫描** - 通过自定义过滤器来控制哪些类被注册为bean。 - **3.9.11 在...

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

    1.14 从Classpath中扫描组件 50 1.14.1 问题 50 1.14.2 解决方案 51 1.14.3 工作原理 51 1.15 小结 56 第2章 高级Spring IoC容器 57 2.1 调用静态工厂方法创建Bean 57 2.1.1 问题 57 2.1.2 解决...

    spring与mybatis整合配置文档

    使用`MapperScannerConfigurer`配置Bean,自动扫描DAO接口,并将其注入到Spring的IOC容器中。 ```xml &lt;bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&gt; ``` ##### 2.5 事务管理 事务管理是...

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

    1.14 从Classpath中扫描组件 50 1.14.1 问题 50 1.14.2 解决方案 51 1.14.3 工作原理 51 1.15 小结 56 第2章 高级Spring IoC容器 57 2.1 调用静态工厂方法创建Bean 57 2.1.1 问题 57 2.1.2 解决...

    springmvc-ibatis

    -- 扫描包 --&gt; &lt;bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; &lt;property name="viewClass" value="org.springframework.web.servlet.view....

    spring applicationContext 配置文件

    -- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能--&gt; &lt;bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:order="0" /&gt; &lt;!-- 配置事务...

    springboot参考指南中文word文档

    - **使用"default"包**: 默认情况下,Spring Boot会自动扫描主类所在的包及其子包。 - **定位main应用类**: 主类通常带有`@SpringBootApplication`注解。 **3.3 配置类** - **导入其他配置类**: 使用`@Import`注解...

    Eclipse下MVC框架的搭建.pdf

    - **Spring配置**:创建Spring的配置文件,定义Bean,包括Service、DAO等,并设置自动扫描。 - **Struts2配置**:编写Action类,定义Action配置,以及结果映射。 - **视图层**:创建JSP页面,利用Struts2的标签...

Global site tag (gtag.js) - Google Analytics