spring ioc容器中的bean对象和我们普通创建的对象是不一样的,有时候我们需要把自己创建的对象转换成bean对象,或者加入到ioc容器中,让spring帮我们管理,怎么办
一、 通过 @Bean注解,示例:
@Configuration
public class RedisConfig {
@SuppressWarnings({ "rawtypes", "unchecked" })
@Bean
public RedisTemplate redisTemplate(JedisConnectionFactory jedisConnectionFactory) {
RedisTemplate template = new StringRedisTemplate(jedisConnectionFactory);
template.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new GenericJackson2JsonRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return template;
}
}
上面我们new 出来的RedisTemplate 对象,交由spring管理,在ioc容器中这个bean的beanname是 redisTemplate, 其实就是方法名
二、 通过 BeanDefinition
在spring启动的时候,将Class 转换成 BeanDefinition,交由spring接管,也能创建出 bean对象
目前正在画图中,要画一些spring bean实例化初始化的图,才能更好的让大家理解这种方式