草庐IT

【Spring】Bean注册类注解

maerpao 2023-04-17 原文

@Configuration

 同@Component,将标注的类作为一个组件,区别是会使用Cglib动态代理,因此使用该注解的类不能是final的

与@Component的区别可见:Configuration和@Component的区别

Cglib动态代理和JDK动态代理区别可见:Cglib动态代理和JDK动态代理的对比

属性

value,一般用不到,会将该值传递给@Component

proxyBeanMethods,是否代理@Bean方法,详见 Configuration和@Component的区别

@Component

将标注的类作为一个组件使用,单例

属性

 value,给组件起名,与@Resource一起使用,根据命名匹配注入对象

@Bean

标记方法用于创建一个Bean对象,并交给Spring IOC容器管理,@Bean标记的方法Spring只会调用一次,常用于@Configuration标记的类下

属性

value,同@Component的value属性

name,与value互为别名

autowire,已废弃,不谈

autowireCandidate,配置Bean是否为自动装配到其他Bean的候选者,默认为true,如果你不希望这个@Bean方法干扰到其他同类型的依赖注入,可能会用到

initMethod,初始化方法,传@Bean方法生成的对象方法名,在@Bean方法执行后执行,一般都会直接将初始化方法写到@Bean方法里,很少用

destroyMethod,销毁方法,在application context关闭时调用,方法不能有参数,可以抛异常,很少用

@ComponentScan/@ComponentScans

指定Spring IOC容器启动时扫描的Bean目录,并将Bean组件初始化后交个IOC容器管理

属性

value,需要扫描的组件路径,String数组类型

basePackages,与value互为别名

basePackageClasses,作用同basePackages,class数组类型,看注释是basePackages的安全用法,单独在每个包下建立专用的类或接口,用于被该属性标记

nameGenerator,指定beanName生成器,BeanNameGenerator的实现类

scopeResolver,指定@Scope注解的解析器,ScopeMetadataResolver的实现类

scopedProxy,指定Scope代理模式,ScopedProxyMode枚举,不使用代理(默认),JDK代理,Cglib代理

resourcePattern,组件扫描正则,例如:启动程序上的注解@SpringBootApplication包含该注解,此属性的默认值为 ../*.class,所以默认扫描启动类所在目录下的所有class文件

useDefaultFilters,是否使用默认过滤器,例如对@Component等注解的检测

includeFilters,组件扫描过滤器,@Filter数组

excludeFilters,组件排除过滤器,@Filter数组

lazyInit,是否对扫描到的组件进行懒加载

@Filter注解

@ComponentScan使用的过滤器

属性:

type:过滤器类型,FilterType枚举

value:与classes互为别名

classes:根据type,表示通过注解过滤,通过Class过滤,还是通过自定义过滤类过滤,class数组类型

pattern:根据type,表示正则表达式过滤或者AspectJ表达式

@Scope

使用在Bean注册类注解上,例如@Bean或@Component,一般用于多例需求,即每次自动注入时都会生成一个新的对象

属性

value,与scopeName互为别名

scopeName,使用哪种Scope类型,常用的有SCOPE_SINGLETON(单例),SCOPE_PROTOTYPE(多例,原型),SCOPE_REQUEST(同Request下单例),SCOPE_SESSION(同session下单例)

proxyMode,指定代理模式,ScopedProxyMode枚举,不使用代理(默认),JDK代理,Cglib代理

@Lazy

字面意思,懒加载,Spring启动时不创建,啥时候用,啥时候执行

属性

value,boolean类型,标记是否懒加载,没啥用,都用这个注解,一般也不会设为false吧

@Conditional

按需创建,满足条件时才会创建Bean对象

属性

value,Condition接口的实现类,如果返回true,则Spring IOC会进行加载

@Import

导入组件类,通常有四种用法:

  • 实现 ImportSelector 接口的类,重新接口中的选择方法,导入部分经过选择后的类到Spring IOC容器中

  • 实现 ImportBeanDefinitionRegistrar 接口的类,允许自定义BeanDefinition

  • @Configuration类,引入@Bean方法生成的对象到Spring IOC容器中

  • 普通类(Spring 4.2支持),将类引入到Spring IOC容器中

属性

 value,需要导入的类,class类型的数组

有关【Spring】Bean注册类注解的更多相关文章

  1. ruby-on-rails - 带 Spring 锁的 Rails 4 控制台 - 2

    我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.

  2. 阿里云国际版免费试用:如何注册以及注意事项 - 2

    作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。​关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐

  3. spring.profiles.active和spring.profiles.include的使用及区别说明 - 2

    转自:spring.profiles.active和spring.profiles.include的使用及区别说明下文笔者讲述spring.profiles.active和spring.profiles.include的区别简介说明,如下所示我们都知道,在日常开发中,开发|测试|生产环境都拥有不同的配置信息如:jdbc地址、ip、端口等此时为了避免每次都修改全部信息,我们则可以采用以上的属性处理此类异常spring.profiles.active属性例:配置文件,可使用以下方式定义application-${profile}.properties开发环境配置文件:application-dev

  4. ruby-on-rails - 设计注册确认 - 2

    我在我的项目中有一个用户和一个管理员角色。我使用Devise创建了身份验证。在我的管理员角色中,我没有任何确认。在我的用户模型中,我有以下内容:devise:database_authenticatable,:confirmable,:recoverable,:rememberable,:trackable,:validatable,:timeoutable,:registerable#Setupaccessible(orprotected)attributesforyourmodelattr_accessible:email,:username,:prename,:surname,:

  5. ruby-on-rails - Spring 不起作用。 [未初始化常量 Spring::SID::DL] - 2

    我无法运行Spring。这是错误日志。myid-no-MacBook-Pro:myid$spring/Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/sid.rb:17:in`fiddle_func':uninitializedconstantSpring::SID::DL(NameError)from/Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/li

  6. ruby-on-rails - 特征未注册 : attribute name - 2

    完成这个有困难。我正在使用seed.rb+factory_girl来使用rakedb:seed填充数据库。(我知道固定装置存在,但我想以这种方式完成,这只是一个示例,数据库将填充复杂的关联对象。)我的种子.rb:require'factory_girl_rails'["QM","CDC","SI","QS"].eachdo|n|FactoryGirl.create(:grau,nome:n)end还有我的/factories/graus.rbFactoryGirl.definedofactory:graudonomeendend但是当我运行时:rakedb:seed我得到:rakeab

  7. 【云原生】SpringCloud-Spring Boot Starter使用测试 - 2

    目录SpringBootStarter是什么?以前传统的做法使用SpringBootStarter之后starter的理念:starter的实现: 创建SpringBootStarter步骤在idea新建一个starter项目、直接执行下一步即可生成项目。 在xml中加入如下配置文件:创建proterties类来保存配置信息创建业务类:创建AutoConfiguration测试如下:SpringBootStarter是什么? SpringBootStarter是在SpringBoot组件中被提出来的一种概念、简化了很多烦琐的配置、通过引入各种SpringBootStarter包可以快速搭建出一

  8. ruby-on-rails - 带有自定义处理器的 CarrierWave 未注册 - 2

    我正在使用carrierwave上传视频然后有一个名为thumb的版本,带有自定义处理器,可以获取视频并使用streamio-ffmpeg创建屏幕截图。视频和文件都已正确上传,但在调用uploader.url(:thumb)时我得到:ArgumentError:Versionthumbdoesn'texist!VideoUploader.rbrequire'carrierwave/processing/mime_types'require'streamio-ffmpeg'classVideoUploader5)File.renamethumb_path,current_pathendd

  9. ruby-on-rails - 如何访问设计 token 授权注册 Controller ? - 2

    我正在使用Deviseauthtokengem用于验证我的Rails应用程序的某些部分。但是,当我尝试使用注册路径创建新用户时,出现以下错误{"errors":["Authorizedusersonly."]}。这是我用于测试的rspec代码,it'createsauserusingemail/passwordcombo'dopostapi_user_registration_path,{email:'xxx',password:'yyy',password_confirmation:'yyy'}putslast_response.bodyexpect(last_response.bo

  10. ruby - 如何将 Thor::Group 注册为带参数的子命令 - 2

    这道题开始于here.但随着我对雷神的了解越来越多,情况发生了很大变化。我正在尝试创建一个带参数的Thor::Group子命令。奇怪的是,如果没有参数,它就可以工作。我可以使用Thor::Group作为子命令吗?这在我输入时有效:foocounterfoo/bin/foomoduleFooclassCLI但是当我输入时这不起作用:foocounter5moduleFooclassCLI','Countupfromtheinput.')endclassCounter:numeric,:desc=>"Thenumbertostartcounting"desc"Prints2numbersb

随机推荐