如何解决错误阅读android 注解框架中发挥框架2

注解出错,这个框架接触不久,按照前人的配置方式配置后出该问题11:29:59.477ERRORorg.springframework.web.servlet.DispatcherServlet-Con
注解出错,这个框架接触不久,按照前人的配置方式配置后出该问题
11:29:59.477 ERROR org.springframework.web.servlet.DispatcherServlet - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping#0' defined in ServletContext resource [/WEB-INF/config/jeecms-servlet-front.xml]: Initializ nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'applyAct': Injection of autowired nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.jeecms.dzpt.manager.ApplyMng com.jeecms.dzpt.action.ApplyAct.applyM nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.jeecms.dzpt.manager.ApplyMng] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527) ~[spring.beans-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) ~[spring.beans-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) ~[spring.beans-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring.beans-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) ~[spring.beans-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) ~[spring.beans-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:398) ~[spring.beans-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1146) ~[spring.context-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:275) ~[spring.beans-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.initHandlerMappings(DispatcherServlet.java:424) ~[spring.web.servlet-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.initStrategies(DispatcherServlet.java:339) ~[spring.web.servlet-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.onRefresh(DispatcherServlet.java:328) ~[spring.web.servlet-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.onApplicationEvent(FrameworkServlet.java:523) ~[spring.web.servlet-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet$ContextRefreshListener.onApplicationEvent(FrameworkServlet.java:749) ~[spring.web.servlet-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet$ContextRefreshListener.onApplicationEvent(FrameworkServlet.java:1) ~[spring.web.servlet-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.context.event.GenericApplicationListenerAdapter.onApplicationEvent(GenericApplicationListenerAdapter.java:51) ~[spring.context-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.context.event.SourceFilteringListener.onApplicationEventInternal(SourceFilteringListener.java:97) ~[spring.context-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.context.event.SourceFilteringListener.onApplicationEvent(SourceFilteringListener.java:68) ~[spring.context-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97) ~[spring.context-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:303) ~[spring.context-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:911) ~[spring.context-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:428) ~[spring.context-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442) ~[spring.web.servlet-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458) ~[spring.web.servlet-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339) ~[spring.web.servlet-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306) ~[spring.web.servlet-3.0.5.jar:3.0.5.RELEASE]
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) [spring.web.servlet-3.0.5.jar:3.0.5.RELEASE]
at javax.servlet.GenericServlet.init(GenericServlet.java:212) [servlet-api.jar:2.5.MR2]
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1213) [catalina.jar:6.0.44]
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026) [catalina.jar:6.0.44]
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4425) [catalina.jar:6.0.44]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4738) [catalina.jar:6.0.44]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:802) [catalina.jar:6.0.44]
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) [catalina.jar:6.0.44]
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:583) [catalina.jar:6.0.44]
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1080) [catalina.jar:6.0.44]
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1003) [catalina.jar:6.0.44]
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:507) [catalina.jar:6.0.44]
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1322) [catalina.jar:6.0.44]
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:325) [catalina.jar:6.0.44]
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) [catalina.jar:6.0.44]
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1068) [catalina.jar:6.0.44]
at org.apache.catalina.core.StandardHost.start(StandardHost.java:822) [catalina.jar:6.0.44]
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1060) [catalina.jar:6.0.44]
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) [catalina.jar:6.0.44]
at org.apache.catalina.core.StandardService.start(StandardService.java:525) [catalina.jar:6.0.44]
at org.apache.catalina.core.StandardServer.start(StandardServer.java:759) [catalina.jar:6.0.44]
at org.apache.catalina.startup.Catalina.start(Catalina.java:595) [catalina.jar:6.0.44]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_43]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_43]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_43]
at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_43]
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) [bootstrap.jar:6.0.44]
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) [bootstrap.jar:6.0.44]
这个应该是springmvc吧,,看下你的配置
解决方案二:
&?xml version="1.0" encoding="UTF-8"?&
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"
default-lazy-init="true"&
&bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&
&property name="locations"&
&value&/WEB-INF/config/jdbc.properties&/value&
&/property&
&bean id="dataSource" class="com.mchange.boPooledDataSource"&
&property name="driverClass" value="${jdbc.driverClassName}" /&
&property name="jdbcUrl" value="${jdbc.url}" /&
&property name="user" value="${jdbc.username}" /&
&property name="password" value="${jdbc.password}" /&
&property name="autoCommitOnClose" value="true"/&
&property name="checkoutTimeout" value="${cpool.checkoutTimeout}"/&
&property name="initialPoolSize" value="${cpool.minPoolSize}"/&
&property name="minPoolSize" value="${cpool.minPoolSize}"/&
&property name="maxPoolSize" value="${cpool.maxPoolSize}"/&
&property name="maxIdleTime" value="${cpool.maxIdleTime}"/&
&property name="acquireIncrement" value="${cpool.acquireIncrement}"/&
&property name="maxIdleTimeExcessConnections" value="${cpool.maxIdleTimeExcessConnections}"/&
&bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&
&property name="dataSource" ref="dataSource"/&
&!-- 去除该动动就不用从jar中加载cmshibernate配置文件了 --&
&!-- &property name="mappingJarLocations"&
&value&/WEB-INF/lib/zqxcom-cms.jar&/value&
&/property&
&property name="mappingLocations"&
&value&classpath*:/com/jeecms/core/entity/hbm/*.hbm.xml&/value&
&value&classpath*:/com/jeecms/cms/entity/main/hbm/*.hbm.xml&/value&
&value&classpath*:/com/jeecms/cms/entity/assist/hbm/*.hbm.xml&/value&
&value&classpath*:/com/jeecms/dzpt/entity/hbm/Advisory.hbm.xml&/value&
&value&classpath*:/com/jeecms/dzpt/entity/hbm/Apply.hbm.xml&/value&
&/property&
&!-- hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect --&
&property name="hibernateProperties"&
hibernate.dialect=org.hibernate.dialect.Oracle9Dialect
hibernate.show_sql=false
hibernate.format_sql=false
hibernate.query.substitutions=true 1, false 0
hibernate.jdbc.batch_size=20
hibernate.cache.use_query_cache=true
&/property&
&property name="entityInterceptor"&
&ref local="treeInterceptor"/&
&/property&
&property name="cacheProvider"&
&ref local="cacheProvider"/&
&/property&
&property name="lobHandler"&
&ref bean="lobHandler" /&
&/property&
&bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true"/&
&bean id="cacheProvider" class="mon.hibernate3.SpringEhCacheProvider"&
&property name="configLocation"&
&value&classpath:ehcache-hibernate.xml&/value&
&/property&
&property name="diskStoreLocation"&
&value&/WEB-INF/cache/hibernate&/value&
&/property&
&bean id="treeInterceptor" class="mon.hibernate3.TreeIntercptor"/&
&bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"&
&property name="sessionFactory" ref="sessionFactory" /&
&context:annotation-config/&
&tx:annotation-driven transaction-manager="transactionManager" /&
解决方案三:
&?xml version="1.0" encoding="UTF-8"?&
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"
default-lazy-init="true"&
&bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&
&property name="locations"&
&value&/WEB-INF/config/jdbc.properties&/value&
&/property&
&bean id="dataSource" class="com.mchange.boPooledDataSource"&
&property name="driverClass" value="${jdbc.driverClassName}" /&
&property name="jdbcUrl" value="${jdbc.url}" /&
&property name="user" value="${jdbc.username}" /&
&property name="password" value="${jdbc.password}" /&
&property name="autoCommitOnClose" value="true"/&
&property name="checkoutTimeout" value="${cpool.checkoutTimeout}"/&
&property name="initialPoolSize" value="${cpool.minPoolSize}"/&
&property name="minPoolSize" value="${cpool.minPoolSize}"/&
&property name="maxPoolSize" value="${cpool.maxPoolSize}"/&
&property name="maxIdleTime" value="${cpool.maxIdleTime}"/&
&property name="acquireIncrement" value="${cpool.acquireIncrement}"/&
&property name="maxIdleTimeExcessConnections" value="${cpool.maxIdleTimeExcessConnections}"/&
&bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&
&property name="dataSource" ref="dataSource"/&
&!-- 去除该动动就不用从jar中加载cmshibernate配置文件了 --&
&!-- &property name="mappingJarLocations"&
&value&/WEB-INF/lib/zqxcom-cms.jar&/value&
&/property&
&property name="mappingLocations"&
&value&classpath*:/com/jeecms/core/entity/hbm/*.hbm.xml&/value&
&value&classpath*:/com/jeecms/cms/entity/main/hbm/*.hbm.xml&/value&
&value&classpath*:/com/jeecms/cms/entity/assist/hbm/*.hbm.xml&/value&
&value&classpath*:/com/jeecms/dzpt/entity/hbm/Advisory.hbm.xml&/value&
&value&classpath*:/com/jeecms/dzpt/entity/hbm/Apply.hbm.xml&/value&
&/property&
&!-- hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect --&
&property name="hibernateProperties"&
hibernate.dialect=org.hibernate.dialect.Oracle9Dialect
hibernate.show_sql=false
hibernate.format_sql=false
hibernate.query.substitutions=true 1, false 0
hibernate.jdbc.batch_size=20
hibernate.cache.use_query_cache=true
&/property&
&property name="entityInterceptor"&
&ref local="treeInterceptor"/&
&/property&
&property name="cacheProvider"&
&ref local="cacheProvider"/&
&/property&
&property name="lobHandler"&
&ref bean="lobHandler" /&
&/property&
&bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true"/&
&bean id="cacheProvider" class="mon.hibernate3.SpringEhCacheProvider"&
&property name="configLocation"&
&value&classpath:ehcache-hibernate.xml&/value&
&/property&
&property name="diskStoreLocation"&
&value&/WEB-INF/cache/hibernate&/value&
&/property&
&bean id="treeInterceptor" class="mon.hibernate3.TreeIntercptor"/&
&bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"&
&property name="sessionFactory" ref="sessionFactory" /&
&context:annotation-config/&
&tx:annotation-driven transaction-manager="transactionManager" /&
解决方案四:
Could not autowire field: private com.jeecms.dzpt.manager.ApplyMng com.jeecms.dzpt.action.ApplyAct.applyM
无法注入,是不是大小写没有对应,或者没有注入实体类
解决方案五:
@Autowire默认按照类型装配
@Resource默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配。
错误是找不到匹配的bean,一种出错的原因可能是因为你没有扫描通过注解配置的javabean,或者忘记加注解,Spring容器里没有javabean对象,
如果是配合@Autowire和@Qualifier使用的话,把@Qualifier注解去掉试试。最好把代码贴出来看一下。
【云栖快讯】首届阿里巴巴中间件技术峰会,揭秘阿里10年分布式技术沉淀!阿里高可用体系核心缔造者、全链路压测创始人,DRDS与TDDL负责人等大咖出场,干货分享,不可错过!&&
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
RDS是一种稳定可靠、可弹性伸缩的在线数据库服务。支持MySQL、SQL Server、PostgreSQL、高...【图文】ssh2传统方式和注解方式集成_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
ssh2传统方式和注解方式集成
上传于|0|0|文档简介
&&非常好用详细的ssh2传统方式和注解方式集成!!
大小:333.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢Android注解原理与常用注解框架
注解原理与常用注解框架
注解基本介绍 编写注解 Android注解框架
注解的基本介绍
注解的定义
能够添加到
源代码的语法元数据。类、方法、变量、参数、包都可以被注解,可用来将信息元数据与程序元素进行关联,常见的注解如@Override, @Deprecated。
元注解是基本注解,所有的自定义注解都将会用到元注解,元注解主要有如下四个:
@Retention
这个注解表示注解的保留方式,有如下三种:
SOURCE:只保留在中,不保留在class中,同时也不加载到中
CLASS:保留在源码中,同时也保留到class中,但是不加载到虚拟机中
RUNING:保留到源码中,同时也保留到class中,最后加载到虚拟机中
具体的区别如下:
运行时注解就是就是运行时运用反射,动态获取对象、属性、方法等,一般的IOC框架就是这样,可能会牺牲一点效率。
编译时注解就是在程序编译时根据注解进行一些额外的操作,大名鼎鼎的ButterKnife运用的就是编译时注解,ButterKnife在我们编译时,就根据注解,自动生成了一些辅助类。要玩编译时注解呢,你得先依赖apt,r然后自己写一个类继承AbstractProcessor,重写process方法,在里面实现如何把配置或注解的信息变成所需要的类。
这个注解表示注解的作用范围,主要有如下:
ElementType.FIELD 注解作用于变量
ElementType.METHOD 注解作用于方法
ElementType.PARAMETER 注解作用于参数
ElementType.CONSTRUCTOR 注解作用于构造方法
ElementType.LOCAL_VARIABLE 注解作用于局部变量
ElementType.PACKAGE 注解作用于包
@Inherited
是否可以被继承,默认为 false
@Documented
是否会保存到 Javadoc 文档中
java中常用的注解有如下三个
@Override: 表示该方法是重写父类中的方法,编译的时候会检查该方法,如果这个方法不是父类中存在的将会报错 @Deprecated: 表示该方法时已经过时的,表示该方法有风险或者有更好的替代方法 @SuppressWarnings: 表示在编译的时候忽略某种错误,如版本检查等
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnonation {
String name() default &&;
default 0;
注解关键字时@interface,然后上面标注为元注解,表示只能修饰方法并且加载到虚拟机中,里面时这个注解所具有的属性,name, id,我们在给方法加注解的时候设置相应的值。
@TestAnnonation(name = &android& , Id = 1)
private void testAnno(){
上面我们在一个方法上面添加注解,然后我们通过下面的方法将这个注解打印出来
private void outputAnnoDetail(Class clazz){
Method [] methods = clazz.getDeclaredMethods();
for(Method method
: methods) {
TestAnnonation testAnnonation
= method.getAnnotation(TestAnnonation.class);
if (testAnnonation != null) {
Log.d(&anonation&, &name------&& + testAnnonation.name() + &------&Id------&& + testAnnonation.Id());
上面的打印结果就是
name------&android------&Id------&1
这是一个运行时注解,注解的作用就是标记一个可以被识别的作用域,可以被其他地方获取解释或者被编译机识别等作用。
Android注解框架
ButterKnife
ButterKnife注解框架是大家常用的注解框架,它主要作用是绑定View并且绑定View常用的监听事件,下面是其中一个注解
@Retention(CLASS) @Target(FIELD)
public @interface BindView {
/** View ID to which the field will be bound. */
@IdRes int value();
通过上面的代码可以看出,ButterKnife的注解保留方式为CLASS模式,也就是会保留到class中但是不会背加载到虚拟机中,这个时候我们就要看下它的AbstractProcessor,一般标注为Class的都会重写AbstractProcessor类,这样在虚拟机进行编译的时候就会做相应的处理。
主要看一下几个方法:
public Set getSupportedAnnotationTypes() {
Set types = new LinkedHashSet&&();
for (Class annotation : getSupportedAnnotations()) {
types.add(annotation.getCanonicalName());
private Set<class& getSupportedAnnotations() {
Set<class& annotations = new LinkedHashSet&&();
annotations.add(BindArray.class);
annotations.add(BindBitmap.class);
annotations.add(BindBool.class);
annotations.add(BindColor.class);
annotations.add(BindDimen.class);
annotations.add(BindDrawable.class);
annotations.add(BindFloat.class);
annotations.add(BindInt.class);
annotations.add(BindString.class);
annotations.add(BindView.class);
annotations.add(BindViews.class);
annotations.addAll(LISTENERS);
}</class</class
上面的方法主要表明会处理哪些注解
public boolean process(Set elements, RoundEnvironment env) {
Map bindingMap = findAndParseTargets(env);
for (Map.Entry entry : bindingMap.entrySet()) {
TypeElement typeElement = entry.getKey();
BindingSet binding = entry.getValue();
JavaFile javaFile = binding.brewJava(sdk);
javaFile.writeTo(filer);
} catch (IOException e) {
error(typeElement, &Unable to write binding for type %s: %s&, typeElement, e.getMessage());
然后就是在编译的时候的具体处理过程,这个过程主要时先找到并解析注解,然后生成java文件,这样在虚拟机真正执行的时候就不用去查找和解析,也就不会耗时了。
* EventBus
EventBus是使用运行时注解,主要的作用是在运行的时候会去查找所有被注解的方法,然后再去解析注解。运行时注解会影响程序的性能,毕竟在运行的时候有一个查找的过程,所以运行时注解的作用一般是标记一个作用区。

我要回帖

更多关于 ssh框架注解配置 的文章

 

随机推荐