来源:爱酷猪责编:网络时间:2025-01-04 14:45:23
@Component被用在要被自动扫描和装配的类(@AutoWired)上。
现在项目上,本工程中的类,一般都使用@Component来生成bean。在把通过web service取得的类,生成Bean时,使用@Bean和getter方法来生成bean。
Spring帮助我们管理Bean分为两个部分,一个是注册Bean,一个装配Bean。
完成这两个动作有三种方式,一种是使用自动配置的方式、一种是使用JavaConfig的方式,一种就是使用XML配置的方式。
在自动配置的方式中,使用@Component去告诉Spring,我是一个bean,你要来管理我,然后使用@AutoWired注解去装配Bean(所谓装配,就是管理对象直接的协作关系)。然后在JavaConfig中,@Configuration其实就是告诉spring,spring容器要怎么配置(怎么去注册bean,怎么去处理bean之间的关系(装配))。那么久很好理解了,@Bean的意思就是,我要获取这个bean的时候,你spring要按照这种方式去帮我获取到这个bean。到了使用xml的方式,也是如此。君不见<bean>标签就是告诉spring怎么获取这个bean,各种<ref>就是手动的配置bean之间的关系。
用@Bean注解的方法:会实例化、配置并初始化一个新的对象,这个对象会由spring IoC 容器管理。
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}
相当于在 XML 文件中配置
<beans>
<bean id="myService" class="com.acme.services.MyServiceImpl"/>
</beans>
生成对象的名字:默认情况下用@Bean注解的方法名作为对象的名字。但是可以用 name属性定义对象的名字.
@Configuration
public class AppConfig {
@Bean(name = "myFoo")
public Foo foo() {
return new Foo();
}
}
首先我们看看这两个注解的作用:
@Component注解表明一个类会作为组件类,并告知Spring要为这个类创建bean。
@Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑。
两者的目的是一样的,都是注册bean到Spring容器中。
@Component(@Controller、@Service、@Repository)通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中。
而@Bean注解通常是我们在标有该注解的方法中定义产生这个bean的逻辑。
举个栗子:
@Controller
//在这里用Component,Controller,Service,Repository都可以起到相同的作用。
@RequestMapping(″/web/controller1″)
public class WebController {
.....
}
而@Bean的用途则更加灵活
当我们引用第三方库中的类需要装配到Spring容器时,则只能通过@Bean来实现
举个例子:
public class WireThirdLibClass {
@Bean
public ThirdLibClass getThirdLibClass() {
return new ThirdLibClass();
}
}
再举个只能用@Bean的例子:
@Bean
public OneService getService(status) {
case (status) {
when 1:
return new serviceImpl1();
when 2:
return new serviceImpl2();
when 3:
return new serviceImpl3();
}
}
以上这个例子是无法用Component以及其具体实现注解(Controller、Service、Repository)来实现的。
总结:@Component和@Bean都是用来注册Bean并装配到Spring容器中,但是Bean比Component的自定义性更强。可以实现一些Component实现不了的自定义加载类。
Spring中使用在类上的常用注解有@Controller、@Repository、@Service、@Component,下面分别详细介绍一下他们的作用:
1、@Controller:用于标注控制层服务。
2、@Repository:用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件。
3、@Service:用于标注业务逻辑层服务,主要用来进行业务的逻辑处理,注入DAO。这种bean默认是单例的,如果想改变,可以使用@Service(“beanName”) 、@Scope(“prototype”)来改变。
4、@Component:把普通的类实例化到spring容器中,相当于配置文件中的 <bean id="" class=""/>。泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Repository、@Services等的时候),我们就可以使用@Component来标注这个类。
总之,@Component,@Service,@Controller,@Repository 注解的类,Spring都会把这些类初始化到Spring容器中,把这些类纳入到spring容器中进行管理。
“菜鸟技术栈”
拳击游戏还是有很多的玩家都是非常的喜欢尝试的,很是刺激,并且也是能够发泄心中的不快吧,现在市面上是有很多的类型的拳击的游戏,这些游戏一般都是一些格斗的游戏,其实是非常的有趣,也是相当的刺激的,游戏中是有一些不同的场景都是能够去进行体验的,我们也是能够去刺激的进行对战的,小编现在就是收集了一些有意思的拳击游戏,相信你们一定会喜欢的。
趣味烧脑游戏一般比较适合人们在无聊的时候打发时间,同时其操作以及游戏规则上都比较简单,让大家不会有上手很难的感受,可以轻轻松松就体验这个游戏的独特乐趣,并且随时下线都不用担心坑队友,同时也可以和好友一起来玩法,有多种挑战模式,可以根据自己的真实水平以及喜好来选择不同的挑战模式参与,收获到不一样的游戏趣味体验!
太空冒险类游戏顾名思义就是以外太空为背景打造的一类游戏,玩家在这种类型的游戏当中可以体验到非常独特有意思的太空冒险旅程,玩法内容的设计上充满了想象力,所有的场景都是人们在日常生活中从来没有见过的,而你可以驾驶各种各样的战舰展开无比激烈的星际对决,同时可以邀请身边的朋友一起参与到冒险当中,竞技对决的过程中十分注重
这里面为大家收集了一系列比较好玩的女生游戏,并且将会不断的更新,每个玩家都可以根据自己的喜好来选择适合自己的游戏打发时间,每款游戏都设置了新手教程,这样方便大家更加轻松的上手,不同类型的游戏可以让你领略到不一样的游戏乐趣,并且在这里随时都可以尝试其他的玩法,让你一次性就可以玩个够,同时还可以将这里的游戏乐趣分享
鸣潮 武器属性精通养成攻略
2022年lol全球总决赛赛程【英雄联盟s8全部赛程结果】
2022年个人所得税计算工资表(2022年个人所得税计算工资表公式)
光遇万圣节先祖活动攻略
花亦山寻月头像框怎么换?
component(componential analysis语言学)
《探索虚拟家园:Minecraft别墅建造指南》
DNF熊猫装扮获取方法详解教程
探索无期迷途:星海潮汐的奥秘之旅
原神的 伊黎耶 的野精灵 任务攻略
用户评论
这听起来很有意思!我以前没听说过元元分析语言学这样的东西。
有11位网友表示赞同!
是说把语言拆解成更小的单元来研究吗?
有7位网友表示赞同!
感觉这种方法能帮助我们更好地理解语言的结构吧?
有11位网友表示赞同!
在很多学科都用分解的方式进行研究,语言学也不例外啊!
有17位网友表示赞同!
元元分析语言学有什么实际应用吗?
有10位网友表示赞同!
学习这种方法需要什么基础知识?
有5位网友表示赞同!
有没有推荐一些入门级的资料?
有12位网友表示赞同!
觉得这样的研究能提供很多有趣的新发现吧!
有18位网友表示赞同!
这听起来像是比较复杂的学科啊。
有15位网友表示赞同!
我想知道元元分析语言学是如何应用在翻译和学习外语方面的!
有20位网友表示赞同!
这个研究方向很有前途!希望看到更多成果!
有10位网友表示赞同!
感觉元元分析语言学对理解不同语言差异很有帮助吧!
有10位网友表示赞同!
我觉得这种方法可以帮助我们更好地进行语言教育设计!
有8位网友表示赞同!
如果能用元元分析语言学研究家乡的方言,会不会很不错?
有6位网友表示赞同!
这个领域的研究者们一定有很多有趣的想法吧!
有14位网友表示赞同!
我对元元分析语言学这个概念还是很新奇的!
有12位网友表示赞同!
希望有机会了解更多关于元元分析语言学的知识!
有17位网友表示赞同!
感觉元元分析语言学是一个很有深度和挑战性的研究方向!
有11位网友表示赞同!
学习这种方法应该能拓宽我们对语言的理解!
有12位网友表示赞同!