Updated on 2011-1-30
在struts2里使用了自动查找类的技术。
那部分代码可以用来实现这个。当然,主要还是要看具体项目需求。
Spring mvc的annotation方式配置Controller也采用了类似技术。
其基本思路是 从 Resource中查找META-INF下包含的jar包和其它classpath信息。
对于直接文件系统路径下文件,直接遍历目录得到类名;
对于jar,则内存中解压,遍历指定路径,得到类名;
在得到类名后,用该类名在classloader中查找具体实现类。
——————————————————————————————————————————————————
最近,大略看了下rails,觉得那种约定方式的编程,确实方便很多。
想到spring的DAO模式,其实基本上都是类似模式。
一堆接口对应一堆dao的实现,配置基本上都是雷同的。
不知道有无可能使用使用这样的方式来自动引入dao:
DaoFactory检索dao interface所在的package,然后解析dao的名字出来,
根据dao的名字建立bean放到spring的bean factory里,同时设置一下session factory。
比如有一个UserDao在接口包里,那么daoName就是userDao,生成的Bean就是userDao。
使用的实现类则按名称模式拼出来%daoName%Hibernate,UserDaoHibernate,或者就是以包的
最后一个字符串作为后缀。
这样就可以放一个dao的interface和实现,进行自动配置了。
类似下面的配置代码。
<bean id="daoFactory" class="cn.mudfans.dwangel.spring.DaoFactory">
<property name="sessionFactory" value="sessionFactory"/>
<property name="daoInterfacePackage" value="cn.mudfans.dwangel.dao"/>
<property name="excludes">
<props/>
</property>
<property name="daoImplementPackage" value="cn.mudfans.dwangel.dao.hibernate"/>
<property name="daoImplementPattern" value="%daoName%Hibernate"/>
</bean>
剩下的问题是,我对spring还不了解,不知道如何解决依赖关系的检查问题。
大家给点意见吧。
分享到:
相关推荐
java *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取...
在本文中,我将讨论棘手的Spring Boot bean定义覆盖机制。 为了使您对该主题更加清楚,让我们从小测验开始。请看下一个简单的例子。 因此,我们有2种配置,它们使用名称beanName实例化bean,在主应用程序中,我们仅...
在Spring框架中,自动扫描和管理Bean是一种便捷的方式,它允许开发者无需显式地在配置文件中声明每个Bean,而是让Spring容器自动发现并管理应用中的组件。这一特性极大地简化了Spring应用的配置,提高了开发效率。...
在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...
1.lib必须按照项目中的classpath中的顺序 不然 系统找不到类 2.框架能够自动生成类和dao层 3.框架集成了Spring 能够自动将bean、dao、service装载到SPring容器中,供调用
在 Spring 框架中,控制多个 bean 的初始化顺序是一个常见的问题。本篇文章将详细介绍如何控制 2 个 bean 的初始化顺序,提供了多种实现方式,并分析了每种方式的优缺。 问题场景 在实际开发中,我们经常会遇到...
在Spring Boot框架中,普通类调用bean是常见的操作,特别是在构建复杂应用时。这篇博客“17. Spring Boot普通类调用bean【从零开始学Spring Boot】”旨在指导初学者如何在非Spring管理的类中访问和使用Spring容器中...
- **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...
在上述例子中,`Student`类中的`teacher`字段使用`@Autowired`注解,Spring会自动找到`Teacher`类型的Bean进行注入。 总之,Spring提供了多种方式来定义和管理Bean,从XML到注解再到Java配置,使得开发更加灵活高效...
在Spring框架中,Bean是核心概念,它代表了应用程序中的对象。这些对象由Spring容器管理,包括它们的创建、初始化、装配以及生命周期管理。在大型项目中,手动编写Bean的配置文件可能会变得繁琐且易出错。为了简化这...
在Spring框架中,自动扫描和管理Bean是一种便捷的方式,它允许开发者无需显式配置每个Bean,而是通过指定包路径来让Spring自动发现和管理Bean。本文将深入探讨这个主题,帮助你更好地理解和应用这一功能。 首先,让...
在Spring框架中,管理Bean的生命周期是至关重要的。`LifeCycleBeanSpring`是一个关于如何在Spring中实现并管理Bean生命周期的实例。理解这个概念对于优化应用程序的性能和资源利用至关重要。下面我们将深入探讨...
当需要在线程中获取Spring注解的bean时,有几种常见的方法: 1. **ThreadLocal**:Spring提供了一种名为`ThreadLocalTargetSource`的特殊`TargetSource`实现,可以将bean实例绑定到当前线程。这样,每个线程都有其...
在本文中,我们介绍了Spring中Bean的生命周期和作用域及实现方式。了解Bean的生命周期和作用域是非常重要的,因为它们决定了Bean的生命周期和可用性。同时,掌握了Bean的实现方式,可以更好地使用Spring框架来管理...
12. **BeanFactoryAware**:Bean可以通过实现这个接口获取到BeanFactory实例,从而在运行时能够访问到Spring容器的其他服务。 13. **ApplicationContextAware**:类似于BeanFactoryAware,但提供的是...
在本篇中,我们将深入探讨"Spring中的Bean"这一主题,包括Bean的定义、配置以及如何在实际应用中使用。 首先,我们需要理解什么是Spring中的Bean。在Spring中,Bean通常代表应用程序中的一个对象,这些对象由Spring...
总结来说,Spring提供多种方式让我们在应用中获取Bean,包括直接通过名称、类型,或者利用注解实现自动装配。了解这些机制,有助于我们更好地理解和使用Spring框架,提高代码的可维护性和灵活性。同时,源码分析能...
4. **正常服务**:Bean现在完全初始化并准备好使用,可以在应用程序中被其他Bean引用,执行业务逻辑。 5. **销毁**:当Spring容器关闭时,或Bean的`destroy-method`属性指定的方法,或实现了`DisposableBean`接口的...
使用`EntityManagerFactoryBean`创建`EntityManagerFactory`,然后在DAO中注入`EntityManager`。Spring Data JPA则进一步简化了DAO实现,通过接口方法名映射到查询,减少了手动编写JPQL或Criteria查询的需求。 5. *...
在Spring中,核心概念之一就是Bean,它是一个简单的Java对象,由Spring IoC容器管理。Spring通过XML配置文件或注解来定义、配置和管理Beans。下面将深入探讨`<beans>`、`<bean>`及其属性,以及其他相关的配置元素。 ...