一,spring中使用@Resource 和@Autowired自动装配bean1,spring applicationContext.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"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
<context:annotation-config />
<bean id="helloWS" class="cn.hz.lly.impl.HelloImpl"/>
<bean id="hello" class=" cn.hz.lly.impl.TestRes" init-method="init"/>
2.java代码
public class TestRes {
@Resource
private IHello helloIml;
public void init(){
helloIml.sayHello("lvzi");
}
}
HelloImpl 略 呵呵。
可以实现自动装配bean了
3,默认情况带有@Resource,@Autowired 的都是必须的spring会自动匹配,找不到则报错
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hello': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [cn.hz.lly.IHello] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, mappedName=, description=, name=, type=class java.lang.Object, authenticationType=CONTAINER)}
可以使用:@Autowired(required=false) 设置,spring找不到匹配的bean时,不会报错。