java 中 component_Spring中@Component与@Bean的区别

@component和@bean的目的是一样的,都是注册bean到spring容器中。

@component  vs  @bean

@component 和 它的子类型(@controller, @service and @repository)注释在类上。告诉spring,我是一个bean,通过类路径扫描自动检测并注入到spring容器中。

@bean不能注释在类上,只能用于在配置类中显式声明单个bean。意思就是,我要获取这个bean的时候,spring要按照这种方式去获取这个bean。默认情况下@bean注释的方法名作为对象的名字,也可以用name属性定义对象的名字。

所有组件类型及其用途

组件注解

用途

标注控制层(spring-mvc的注解)(如:*controller)

标注业务层(如:*service)

标注持久层(如:*dao)

所有组件类型都以相同的方式处理。子类型仅仅是标记,有利于代码可读性而不是特性。

验证代码如下:

1 @controller

2 @requestmapping("/web")

3 public class webcontroller {

4 @responsebody

5 @requestmapping("/msg")

6 public string message(){

7 return "msg";

8 }

9 }

1 @component

2 @requestmapping("/web")

3 public class webcontroller {

4 @responsebody

5 @requestmapping("/msg")

6 public string message(){

7 return "msg";

8 }

9 }

1 @service

2 @requestmapping("/web")

3 public class webcontroller {

4 @responsebody

5 @requestmapping("/msg")

6 public string message(){

7 return "msg";

8 }

9 }

访问url=locahost:8080/web/msg,三段代码均返回字符串msg。(此web项目我自己用的端口8080)

@bean的使用

1 // just a pojo

2 public class messagebuilder {

3 public string getmsg(){

4 return "msgbuilder";

5 }

6 }

1 import org.springframework.context.annotation.bean;

2 import org.springframework.context.annotation.configuration;

3 // let's turn the pojo into a bean

4 @configuration

5 public class appconfig {

6 @bean

7 public messagebuilder messagebuilder(){

8 return new messagebuilder();

9 }

10 }

1 @controller

2 @requestmapping("/web")

3 public class webcontroller {

4 // finally, hook it up

5 @autowired

6 private messagebuilder messagebuilder;

7

8 @responsebody

9 @requestmapping("/msg")

10 public string message(){

11 return messagebuilder.getmsg();

12 }

13

14 }

参考文章:

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值