`

利用Spring2.0的AOP功能向Domain Model注入DAO

阅读更多
目前在Spring 2.0里,可以向Domain Model对象里注入DAO,让POJO真正变成充血模型成为现实,这就意味著可以直接在POJO对象里进行业务逻辑和事物托管,只要我们在代码里用new操作符构造出来的对象都可以给Spring容器进行托管、具体使用如下:
@Configurable(autowire=Autowire.BY_TYPE) // 加上基于jdk1.5的注解
public class User {
  private int id;
  private String name;
 
  private UserDao userDao;
 
  public int getId() {
    return this.id;
  }
 
  public void setId(int id) {
    this.id = id;
  }
 
  public String getName() {
   return this.name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  public UserDao getUserDao() {
    return userDao;
  }
 
  public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
  }
}
 
public interface UserDao {
  public List<User> loadAll();
}
 
public class UserDaoImpl extends HibernateDaoSupport {
  public List<User> loadAll() {
    .......................
    .......................
  }
}
 
spring.xml
<?xml version="1.0" encoding="UTF-8"?>
  <aop:spring-configured />
  <bean id="dataSource"
  class="org.apache.commons.dbcp.BasicDataSource"
  destroy-method="close">
  <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  <property name="url"
   value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8" />
  <property name="username" value="root" />
  <property name="password" value="avaJevoLI" />
  <property name="maxWait" value="120000" />
  <property name="maxIdle" value="10" />
  <property name="maxActive" value="500" />
  <property name="initialSize" value="50" />
 </bean>
 <bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
  <property name="dataSource">
   <ref bean="dataSource" />
  </property>
  <property name="annotatedClasses">
   <list>
    <value>com.zhenuu.model.User</value>
   </list>
  </property>
  <!--
   <property name="annotatedPackages">
   <list>
   <value>test.package</value>
   </list>
   </property>
  -->
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">
     org.hibernate.dialect.MySQLInnoDBDialect
    </prop>
    <prop key="hibernate.show_sql">true</prop>
   </props>
  </property>
 </bean>
 
 <bean id="userDao" class="com.zhenuu.user.dao.UserDaoImpl">
  <property name="sessionFactory" ref="sessionFactory" />
 </bean>
 
 <bean id="user" class="com.zhenuu.user.model.User">
  <property name="userDao" ref="userDao" />
 </bean>
 
</beans>
 
client.java
public class Client {
  public static void main(String...args) {
    new ClassPathXmlApplicationContext(new String[]{"classpath:spring.xml"});
    User user = new User();
    user.setId(10);
    List<User> users = user.loadAll();
    for(User user1 : users) {
      System.out.println(user1.getName());
    }
  }
}
 
运行:
java -javaagent:G:\我的开发包\spring\spring-framework-2.0-rc2\lib\aspectj\aspectjweaver.jar Client
分享到:
评论

相关推荐

    Java MVC framework, agile, fast, rich domain model, made e.zip

    Spring MVC是目前最流行的Java MVC框架之一,它是Spring框架的一部分,提供了丰富的特性和功能,包括依赖注入、AOP(面向切面编程)、数据访问支持、以及与各种模板引擎的集成。使用Spring MVC,开发者可以快速构建...

    spring jpetstore spring附带的例子

    3. 模型(Model):Spring MVC中的模型通常由服务层对象(Service)和领域对象(Domain Object)组成。例如,Product、Category等实体类代表了应用的数据模型,而对应的服务类则封装了业务逻辑,如添加、删除和查询...

    springdata整合sprig+springmvc+maven分模块化搭建项目

    Spring是Java开发中的一个核心框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能,用于简化企业级应用的开发。在本项目中,Spring作为整个架构的基础,负责管理各个组件的生命周期,提供事务管理、安全控制等...

    springmvc深入解析.pdf

    在Spring MVC中,还有一个AOP advice,SendOrderConfirmationEmailAdvice,用于在完成一条order的数据库插入之后,向用户发送一封确认邮件,相应的配置位于applicationContext.xml中。 在org.springframework....

    基于struts2 spring2.5 hibernate3的人事管理系统 源码完整包

    这个系统利用了贫血模型(Anemic Domain Model)来实现DAO层,旨在提供高效、稳定且易于维护的企业级解决方案。 首先,Struts2是一个强大的MVC(Model-View-Controller)框架,它负责处理HTTP请求,并将这些请求...

    Spring+Hibernate+Struts(SSH)框架整合实战

    Spring则作为一个轻量级的容器,提供依赖注入(DI)和面向切面编程(AOP)功能,用于管理应用程序的组件,包括Struts和Hibernate;而Hibernate作为对象关系映射(ORM)工具,简化了数据库操作,使得Java对象可以直接...

    SSH整合包详解.Struts2.2.3+Spring3.1.0.M2+Hibernate3.6.6

    2. Spring:Spring主要负责业务逻辑层和部分表示层的功能,它提供了依赖注入(DI)和面向切面编程(AOP),使得代码更易测试和解耦。在SSH框架中,Spring管理着Struts2的Action实例,同时也负责数据访问对象(DAO)...

    Struts+Spring+Hibernate

    **Spring** 是一个全面的企业级应用框架,它不仅支持依赖注入(DI)和面向切面编程(AOP),还包含了丰富的功能,如事务管理、安全管理、数据访问等。在业务层,Spring可以帮助开发者管理对象的生命周期,提供事务...

    SpringBoot项目源代码(Spring+SpringMVC+SpringBoot)_28208-

    首先,Spring框架的核心功能如依赖注入(DI)和面向切面编程(AOP)的实现是项目的基础。Spring通过依赖注入降低了组件之间的耦合度,使得各部分模块可以更加独立地开发和测试。同时,AOP技术允许开发者将横切关注点如...

    Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo

    Spring.NET 提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等功能,帮助开发者构建松散耦合、可测试和可维护的软件。在本项目中,Spring.NET 被用作应用程序的底层...

    struts2+spring+hibernate

    **Spring**:Spring是一个全面的Java企业级应用开发框架,提供IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)等核心特性。在本项目中,Spring被用来管理bean的生命周期...

    struts1、hibernate、spring的整合

    - **编写Service和DAO**:实现业务逻辑和服务接口,并通过Spring进行依赖注入。 - **编写控制器**:使用Struts的Action类处理用户的请求,并调用Service层完成相应的业务逻辑。 #### 五、总结 通过以上步骤,我们...

    火炬博客系统5

    即表示层(Presentation Layer)、域模型层(Domain Model Layer)、 业务层(bussiness Layer)和持久层(Persistence Layer),使用Spring框架整合Struts和 Hibernate,用Spring的“控制反转IOC”, 或者“setter...

    火炬博客系统7

    即表示层(Presentation Layer)、域模型层(Domain Model Layer)、 业务层(bussiness Layer)和持久层(Persistence Layer),使用Spring框架整合Struts和 Hibernate,用Spring的“控制反转IOC”, 或者“setter...

    火炬博客系统6

    即表示层(Presentation Layer)、域模型层(Domain Model Layer)、 业务层(bussiness Layer)和持久层(Persistence Layer),使用Spring框架整合Struts和 Hibernate,用Spring的“控制反转IOC”, 或者“setter...

    ModelsTry3.1

    Spring则是一个全面的后端应用框架,提供了依赖注入、AOP(面向切面编程)、数据访问等多种功能;Hibernate则是一个ORM(对象关系映射)工具,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。 ...

    SSM配置demo

    Spring是Java应用中的核心框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能,用于管理对象的生命周期和解耦应用程序组件。在SSM配置中,Spring作为容器,负责创建和管理Bean,以及处理应用程序的事务管理。 ...

    基于SSH的礼品屋网站的设计与开发.doc

    - **Spring**:提供依赖注入(DI)和面向切面编程(AOP)功能,用于管理和协调其他组件,如Struts2和Hibernate。 - **Hibernate**:是一个ORM(对象关系映射)框架,使得Java对象与数据库表之间的映射变得简单,...

Global site tag (gtag.js) - Google Analytics