`
wangchen2009hao
  • 浏览: 8606 次
社区版块
存档分类
最新评论

使用构造器注入实体bean

阅读更多

在学习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就去找后面引用的对象,没有实例化就先实例化这个。酷

1
1
分享到:
评论

相关推荐

    JAVA Bean 课程.rar_Java bean

    - **会话Bean**、**实体Bean**和**消息驱动Bean**:EJB定义了三种类型的Bean,分别处理不同的业务需求,如短暂交互、持久化数据和异步通信。 6. **Java Bean 的局限性** - **过于简单**:Java Bean的设计相对基础...

    spring学习笔记

    - **对于复杂的依赖关系或者对对象的状态有严格要求的场景**,建议使用构造器注入,因为它能够确保对象在创建时就具有完整且有效的状态。 #### 五、总结 通过上述分析,我们可以看到Spring框架通过依赖注入机制极...

    EJB3实例教程破解版

    - **查询中使用构造器(Constructor)** - 说明如何在JPQL查询结果中返回对象实例。 - **聚合查询(Aggregation)** - 介绍如何在JPQL查询中使用聚合函数。 - **关联(join)** - 解释如何在JPQL查询中使用连接操作。 -...

    EJB3.0中文文档

    **3.9.8 查询中使用构造器(Constructor)** 返回一个由查询结果组成的自定义对象。 **3.9.9 聚合查询(Aggregation)** 进行统计分析,如计数、求和等。 **3.9.10 关联(join)** 连接多个实体Bean进行查询。 **3.9...

    spring4讲义-第二章spring与IoC

    其中,构造器注入通过构造函数来提供依赖对象,设值注入则是通过对象的setter方法来注入依赖对象,而接口注入则需要实现特定的注入接口。Spring框架主要支持构造器注入和设值注入。 Spring的程序开发建立在传统三层...

    Spring系列面试题129道(附答案解析)

    - 构造器注入(Constructor Injection) - Setter注入(Setter Injection) - 字段注入(Field Injection) - 接口注入(Interface Injection) 12、区分构造函数注入和setter注入。 构造函数注入是指在构造对象时...

    Spring-IoC.rar_容器

    - **构造器注入**:通过构造器参数,传入依赖对象。 - **接口注入**:较少使用,但是一种避免使用setter和构造器的方法,通过实现特定接口来注入依赖。 5. **容器扩展性** - **AOP(面向切面编程)**:Spring...

    ejb2创建工程文档

    - 对于实体Bean,你需要创建一个实现了`PersistenceBean`接口的Java类,并提供一个无参构造器。实体Bean通常代表数据库中的持久化数据。 - 会话Bean不涉及持久化,它们用于封装业务逻辑。你可以创建一个实现`Session...

    j2ee攻略(经典)

    - **3.9.8 查询中使用构造器 (Constructor)** 创建新的对象实例作为查询结果。 - **3.9.9 聚合查询 (Aggregation)** 计算结果集的总和、平均值等。 - **3.9.10 关联 (join)** 表达实体之间的关联关系。 - **3.9....

    EJB3.0代码实例

    3. **实体Bean的无接口模式**:EJB3.0允许实体Bean不再需要实现任何接口,只需要一个公共的无参构造器。这使得实体Bean更接近普通的Java类,降低了学习曲线。 4. **会话Bean的轻量级API**:EJB3.0提供了`@Stateless...

    EJB3.0实例教程(中文版)

    - **EJB3QL语言**:详细解释EJB3QL语言的各种特性,如大小写敏感性、排序、查询部分属性、使用构造器、聚合查询、关联查询等。 以上是基于给定文件的标题、描述、标签及部分内容所总结的关键知识点。这些知识点覆盖...

Global site tag (gtag.js) - Google Analytics