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

spring2.5.6依赖注入

 
阅读更多

 

spring三种注入:

1 构造器注入

2 setter注入

3 使用注解方式注入

 

////构造器注入

 

0 需要准备的包

asm.jar

cglib.jar

 

1 类构造器中配置要注入的对象

//基本参数
	private A a;	
	private List<Integer> list;
	
	//构造器注入
	public TestA(A a,List<Integer> list)
	{
		this.a = a;
		this.list = list;
	}
 

2 配置文件中配置

<bean id="a" class="com.spring.domain.A"></bean>
		<bean id="testA" class="com.spring.test.TestA">
			<constructor-arg index="0" type="com.spring.domain.A" ref="a" />
			<constructor-arg index="1">
				<list>
					<value>1</value>
					<value>2</value>
				</list>
		</constructor-arg>	
	</bean>
 

////setter注入

 

1 类中配置要注入的对象

//基本参数
	private A a;	
	private List<Integer> list;
	private String str;
	
	//set/get方法
	public A getA() {
		return a;
	}

	public void setA(A a) {
		this.a = a;
	}

	public List<Integer> getList() {
		return list;
	}

	public void setList(List<Integer> list) {
		this.list = list;
	}

	public String getStr() {
		return str;
	}

	public void setStr(String str) {
		this.str = str;
	}
 

2 配置文件中配置

<bean id="testB" class="com.spring.test.TestB">
		<property name="a" ref="a"></property>
		<property name="list">
			<list>
				<value>1</value>
				<value>2</value>
			</list>
		</property>
		<property name="str" value="str"></property>
	</bean>
 

////使用注解方式注入

 

a 注解配置

<!-- 开启注解功能 -->

	<context:annotation-config></context:annotation-config>
	
	<!-- 设置注解扫描包,该设置自动开启注解功能 -->
	<context:component-scan base-package="com.spring.*"></context:component-scan>
 

b 注册类B

package com.spring.domain;

	import org.springframework.stereotype.Component;
	
	@Component
	public class B {
		public String toString()
		{
			return "com.spring.domain.B";
		}
		/**
		 * @param args
		 */
		public static void main(String[] args) {
			// TODO Auto-generated method stub
	
		}
	}
 

 

c 注解注入bean B

@Autowird:默认按类型装配

@Autowired
private B b;
   

@Resource:默认按名称装配,当找不到与名称相匹配的bean时,才会按类型装配

如果@Resource的name属性没有指定,即默认以属性名称作为bean名称寻找依赖的对象

@Resource
private B b;
 

d 注册测试类TestC

<bean id="testC" class="com.spring.test.TestC"></bean>
 

  e 获取测试类,测试类B是否注入成功

 AbstractApplicationContext  ctx = new ClassPathXmlApplicationContext("bean.xml");
	TestC test = (TestC)ctx.getBean("testC");
	System.out.println(test.b.toString());
 

总结:

1 类的注册

//可以在spring的配置文件中配置如下:

<bean id="testC" class="com.spring.test.TestC"></bean>
 

//也可以通过注解的方式注册,如下:

@Component
public class B 
 

2 类的注入可以在spring的配置文件中配置如下:

//构造器注入
	<bean id="testA" class="com.spring.test.TestA">
		<constructor-arg index="0" type="com.spring.domain.A" ref="a" />
	</bean>
	
//属性注入
<bean id="testB" class="com.spring.test.TestB">
		<property name="a" ref="a"></property>
  </bean>
  
  //注解注入
  @Resource
	private B b;
 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics