在学习Spring的Ioc控制反转的时候看到了利用构造器注入实体bean,但是在项目中很少用到,最苦恼就是不知道学到的东西不知道在哪里用,先记录下来。谁能告诉我你们在项目中怎么用,嘎嘎。
业务bean
package service; import java.sql.Savepoint; import dao.OracleDao; public class PersonServce { OracleDao oracleDao ; String name; //构造器 public PersonServce(OracleDao oracleDao, String name) { super(); this.oracleDao = oracleDao; this.name = name; } //打印出来好测试 public void save() { oracleDao.save(); System.out.println(name); } }
模拟数据库bean
package dao; public class OracleDao { public static void save() { System.out.println("模拟Oracle的保存方法"); } }
配置文件bean.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="oracleDao" class="dao.OracleDao"></bean> <!--constructor构造 arg参数 聪明吧嘻嘻--> <!--参数是从0开始的,如果是基本类型直接用value属性就可以--> <!--如果是自己定义的类型就得把类型写上,引用哪个对象--> <bean id="personServce" class="service.PersonServce"> <constructor-arg index="0" type="dao.OracleDao" ref="oracleDao"></constructor-arg> <constructor-arg index="1" value="数据库"></constructor-arg> </bean> </beans>
测试代码
package test; import static org.junit.Assert.*; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import service.PersonServce; public class TestPersonService { @Test public void test() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml"); PersonServce personServce = (PersonServce)applicationContext.getBean("personServce"); //打印出来模拟数据库的保存和 那个名字,证明注入成功了 嘻嘻 personServce.save(); } }
一开始我以为配置文件ref后面的值必须在前面有声明的,毕竟java是先声明后使用的嘛,后来发现不报错,自以为肯定是spring容器发现ref就去找后面引用的对象,没有实例化就先实例化这个。
相关推荐
- **会话Bean**、**实体Bean**和**消息驱动Bean**:EJB定义了三种类型的Bean,分别处理不同的业务需求,如短暂交互、持久化数据和异步通信。 6. **Java Bean 的局限性** - **过于简单**:Java Bean的设计相对基础...
- **对于复杂的依赖关系或者对对象的状态有严格要求的场景**,建议使用构造器注入,因为它能够确保对象在创建时就具有完整且有效的状态。 #### 五、总结 通过上述分析,我们可以看到Spring框架通过依赖注入机制极...
- **查询中使用构造器(Constructor)** - 说明如何在JPQL查询结果中返回对象实例。 - **聚合查询(Aggregation)** - 介绍如何在JPQL查询中使用聚合函数。 - **关联(join)** - 解释如何在JPQL查询中使用连接操作。 -...
其中,构造器注入通过构造函数来提供依赖对象,设值注入则是通过对象的setter方法来注入依赖对象,而接口注入则需要实现特定的注入接口。Spring框架主要支持构造器注入和设值注入。 Spring的程序开发建立在传统三层...
- 构造器注入(Constructor Injection) - Setter注入(Setter Injection) - 字段注入(Field Injection) - 接口注入(Interface Injection) 12、区分构造函数注入和setter注入。 构造函数注入是指在构造对象时...
- **构造器注入**:通过构造器参数,传入依赖对象。 - **接口注入**:较少使用,但是一种避免使用setter和构造器的方法,通过实现特定接口来注入依赖。 5. **容器扩展性** - **AOP(面向切面编程)**:Spring...
- 对于实体Bean,你需要创建一个实现了`PersistenceBean`接口的Java类,并提供一个无参构造器。实体Bean通常代表数据库中的持久化数据。 - 会话Bean不涉及持久化,它们用于封装业务逻辑。你可以创建一个实现`Session...
- **3.9.8 查询中使用构造器 (Constructor)** 创建新的对象实例作为查询结果。 - **3.9.9 聚合查询 (Aggregation)** 计算结果集的总和、平均值等。 - **3.9.10 关联 (join)** 表达实体之间的关联关系。 - **3.9....
3. **实体Bean的无接口模式**:EJB3.0允许实体Bean不再需要实现任何接口,只需要一个公共的无参构造器。这使得实体Bean更接近普通的Java类,降低了学习曲线。 4. **会话Bean的轻量级API**:EJB3.0提供了`@Stateless...
具体实现DI的方法有多种,包括构造器注入、设值注入和接口注入。在这个实验中,我们可能会使用设值注入,即通过setter方法将DAO注入到Service中。首先,我们需要在Spring配置文件(如`applicationContext.xml`)中...
书中详细阐述了EJB3QL的各种查询语法,包括大小写敏感性、排序、属性选择、构造器使用、聚合查询、关联、实体比较、批量更新和删除、条件表达式、子查询以及结果集分页等高级功能。通过这些内容的学习,开发者可以更...
- 包括大小写敏感性、排序、查询部分属性、使用构造器、聚合查询、关联、比较实体、批量更新与删除等高级特性。 - **事务管理服务**: - 介绍EJB3.0提供的事务管理机制和服务。 - 如何配置和使用这些服务。 - *...