文章目录
- 一、Bean交给Spring管理
 - 1、@Component
 - 2、@Bean
 - 3、@Controller
 - 4、@Service
 - 5、@Repository
 - 6、@Configuration
 - 7、@ComponentScan
 
- 二、作用域
 - 三、依赖注入
 - 1、@Autowired
 - 2、@Resource
 - 3、@Qualifier
 
- 四、读取配置文件值
 
 
 
 
一、Bean交给Spring管理
 
1、@Component
 
- 通用注解,等效于基于XML创建Bean的标签
<bean id="" class=""> - 在类上添加,将这个类识别为Bean,放入IOC容器中,交给Spring管理
 - 属性
String value();
  
 
2、@Bean
 
- 在方法上添加,方法会返回一个对象,放入IOC容器中,交给Spring管理
 - 默认方法名=注入的对象名,也可以指定名称
@Bean(name="jedisPool") - 和@Component异同? 
- 两个都是注册bean到Spring容器中
 - 当想要将第三方库中的组件装配到你的应用中,在这种情况下,是没有办法在它的类上添加@Component注解的,此时可以使用@Bean,如:RedisTemplate、JedisPool
 
  
 
3、@Controller
 
 
4、@Service
 
 
5、@Repository
 
- 添加在持久化层实现类上
 - 里面包含
@Component 
 
6、@Configuration
 
- 配置类注解,会把这个类作为配置文件读取
 - 里面包含
@Component 
 
7、@ComponentScan
 
 
二、作用域
 
1、@Lazy(false)
 
 
@Scope
 
- 在类上添加,设置单例、非单例
 @Scope("prototype") 、@Scope("singleton") 单例,默认
 
三、依赖注入
 
1、@Autowired
 
 
2、@Resource
 
- 属于java(J2EE),并不属于Spring
 - 若指定name属性,则按照名称(by-name)装配,未找到则抛异常
 - 若指定type属性,则按照类型(by-type)装配,未找到、找到多个则抛异常
 - 未指定name、type属性,按照名称(by-name)装配;如果未找到,则按照类型(by-type)装配
 
 
3、@Qualifier
 
- 一般配合@Autowired使用
 @Autowired+@Qualifier = @Resource的by-name- 比如一个接口有两个实现类时,使用@Autowired注入找到2个 会异常,使用
@Qualifier指明要注入的实现类的名称 
 
@Resource(name="user")
private User user;@Autowired
@Qualifier("user")
private User user;
 
四、读取配置文件值
 
1、@Value
 
- 将配置文件中的值注入属性,作为属性的初始值
 - 不支持松散绑定
 
 
my:host: http://localhostport: 8080
 
@Value("${my.url}")
private String url;@Value("${my.port}")
private Integer port;