Spring中bean的理解

一、bean是什么?

1、Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性(即实例化);

2、凡是有方法或属性的类都需要实例化,这样才能具象化去使用这些方法和属性;

3、规律:凡是子类及带有方法或属性的类都要加上注册Bean到Spring IoC的注解;

4、把Bean理解为类的代理或代言人(实际上确实是通过反射、代理来实现的),这样它就能代表类拥有该拥有的东西了

5、我们都在微博上@过某某,对方会优先看到这条信息,并给你反馈,那么在Spring中,你标识一个@符号,那么Spring就会来看看,并且从这里拿到一个Bean或者给出一个Bean

二、@Bean @Component@ComponentScan是什么?

1、@Bean是放在方法的注释,它会告诉Spring这个方法会返回一个对象,该对象要注册为Spring应用上下文中的bean。换句话说,它很明确地告诉被注释的方法,你给我产生一个Bean,然后交给Spring容器,剩下的你就别管了。在通过Java代码装配bean中@Bean常与@Configuration配合使用。@Configuration表明该类是个配置类。

2、@Component放在类上面,表明该类会作为组件类,告知Spring要为这个类创建bean

3、@ComponentScan,启动组件扫描该类所在的包以及这个包下左右的子包,查找带有@Component注解的类。之后所有带有@Component注解的类都会创建为bean。

三、注解分为两类:

1、一类是使用Bean,即是把已经在xml文件中配置好的Bean拿来用,完成属性、方法的组装;比如@Autowired , @Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;

2、一类是注册Bean,@Component , @Repository , @ Controller , @Service , @Configration这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired , @Resource配合到一起,把对象、属性、方法完美组装。

原文:https://blog.csdn.net/wangdan19901010/article/details/78317672