文章目录
- 一、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;