Spring常用注解汇总Word文档下载推荐.docx

上传人:b****5 文档编号:17450430 上传时间:2022-12-01 格式:DOCX 页数:20 大小:24.09KB
下载 相关 举报
Spring常用注解汇总Word文档下载推荐.docx_第1页
第1页 / 共20页
Spring常用注解汇总Word文档下载推荐.docx_第2页
第2页 / 共20页
Spring常用注解汇总Word文档下载推荐.docx_第3页
第3页 / 共20页
Spring常用注解汇总Word文档下载推荐.docx_第4页
第4页 / 共20页
Spring常用注解汇总Word文档下载推荐.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

Spring常用注解汇总Word文档下载推荐.docx

《Spring常用注解汇总Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Spring常用注解汇总Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。

Spring常用注解汇总Word文档下载推荐.docx

}

再定义一个猴子:

publicclassMonkey{

privateStringmonkeyName="

MonkeyKing"

MonkeyName:

+monkeyName;

定义一个动物园:

publicclassZoo{

privateTigertiger;

privateMonkeymonkey;

publicTigergetTiger(){

returntiger;

publicvoidsetTiger(Tigertiger){

this.tiger=tiger;

publicMonkeygetMonkey(){

returnmonkey;

publicvoidsetMonkey(Monkeymonkey){

this.monkey=monkey;

returntiger+"

\n"

+monkey;

spring的配置文件这么写:

<

?

xmlversion="

1.0"

encoding="

UTF-8"

>

beans

xmlns="

http:

//www.springframework.org/schema/beans"

xmlns:

xsi="

//www.w3.org/2001/XMLSchema-instance"

p="

//www.springframework.org/schema/p"

context="

//www.springframework.org/schema/context"

xsi:

schemaLocation="

//www.springframework.org/schema/beans

http:

//www.springframework.org/schema/beans/spring-beans-3.0.xsd

//www.springframework.org/schema/context

//www.springframework.org/schema/context/spring-context-3.0.xsd

"

<

beanid="

zoo"

class="

com.spring.model.Zoo"

>

propertyname="

tiger"

ref="

/>

monkey"

/bean>

com.spring.model.Tiger"

com.spring.model.Monkey"

/beans>

测试方法:

publicclassTestAnnotation{

/**

*不使用注解

*/

@Test

publicvoidtest(){

//读取配置文件

ApplicationContextctx=newClassPathXmlApplicationContext("

applicationContext2.xml"

);

Zoozoo=(Zoo)ctx.getBean("

System.out.println(zoo.toString());

都很熟悉,权当复习一遍了。

1、@Autowired

@Autowired顾名思义,就是自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property。

当然,getter看个人需求,如果私有属性需要对外提供的话,应当予以保留。

@Autowired默认按类型匹配的方式,在容器查找匹配的Bean,当有且仅有一个匹配的Bean时,Spring将其注入@Autowired标注的变量中。

因此,引入@Autowired注解,先看一下spring配置文件怎么写:

beansxmlns="

//www.springframework.org/schema/beanshttp:

//www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp:

//www.springframework.org/schema/contexthttp:

//www.springframework.org/schema/context/spring-context-3.0.xsd"

context:

component-scanbase-package="

com.spring"

注意第13行,使用必须告诉spring一下我要使用注解了,告诉的方式有很多,<

xxx"

是一种最简单的,spring会自动扫描xxx路径下的注解。

看到第15行,原来zoo里面应当注入两个属性tiger、monkey,现在不需要注入了。

再看下,Zoo.java也很方便,把getter/setter都可以去掉:

importorg.springframework.beans.factory.annotation.Autowired;

@Autowired

}

这里@Autowired注解的意思就是,当Spring发现@Autowired注解时,将自动在代码上下文中找到和其匹配(默认是类型匹配)的Bean,并自动注入到相应的地方去。

有一个细节性的问题是,假如bean里面有两个property,Zoo.java里面又去掉了属性的getter/setter并使用@Autowired注解标注这两个属性那会怎么样?

答案是Spring会按照xml优先的原则去Zoo.java中寻找这两个属性的getter/setter,导致的结果就是初始化bean报错。

 

OK,假设此时我把.xml文件的16行、17行两行给去掉,再运行,会抛出异常:

org.springframework.beans.factory.BeanCreationException:

Errorcreatingbeanwithname'

zoo'

:

Injectionofautowireddependenciesfailed;

nestedexceptionisorg.springframework.beans.factory.BeanCreationException:

Couldnotautowirefield:

privatecom.spring.model.Tigercom.spring.model.Zoo.tiger;

nestedexceptionisorg.springframework.beans.factory.NoSuchBeanDefinitionException:

Nomatchingbeanoftype[com.spring.model.Tiger]foundfordependency:

expectedatleast1beanwhichqualifiesasautowirecandidateforthisdependency.Dependencyannotations:

{@org.springframework.beans.factory.annotation.Autowired(required=true)}

atorg.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:

285)

atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:

1074)

atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:

517)

atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:

456)

atorg.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:

291)

atorg.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:

222)

atorg.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:

288)

atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:

190)

atorg.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:

580)

atorg.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:

895)

atorg.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:

425)

atorg.springframework.context.support.ClassPathXmlApplicationContext.<

init>

(ClassPathXmlApplicationContext.java:

139)

83)

atcom.spring.test.TestAnnotation.test(TestAnnotation.java:

16)

atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)

atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:

39)

atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:

25)

atjava.lang.reflect.Method.invoke(Method.java:

597)

atorg.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:

45)

atorg.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:

15)

atorg.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:

42)

atorg.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:

20)

atorg.junit.runners.ParentRunner.runLeaf(ParentRunner.java:

263)

atorg.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:

68)

47)

atorg.junit.runners.ParentRunner$3.run(ParentRunner.java:

231)

atorg.junit.runners.ParentRunner$1.schedule(ParentRunner.java:

60)

atorg.junit.runners.ParentRunner.runChildren(ParentRunner.java:

229)

atorg.junit.runners.ParentRunner.access$000(ParentRunner.java:

50)

atorg.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:

atorg.junit.runners.ParentRunner.run(ParentRunner.java:

300)

atorg.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:

atorg.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:

38)

atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:

460)

673)

atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:

386)

atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:

196)

Causedby:

org.springframework.beans.factory.BeanCreationException:

atorg.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:

502)

atorg.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:

84)

282)

...36more

org.springframework.beans.factory.NoSuchBeanDefinitionException:

atorg.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:

920)

atorg.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:

789)

atorg.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:

703)

474)

...38more

因为,@Autowired

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1