springboot⾃动装配原理详解springboot⾃动装配原理详解
1)传统ssm整合redis的时候需要在xml的配置⽂件中进⾏⼤量的配置Bean 我们在这⾥使⽤springboot来代替ssm的整合,只是通过xml的形式来整合redis
第⼀步:加⼊配置
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.0.9.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
第⼆步: 配置xml的bean的配置
第三步:导⼊配置
@ImportResource(locations = "l")  此注解⽤于导⼊xml的配置⽂件
@SpringBootApplication
@ImportResource(locations = "l")
@RestController public class TulingOpenAutoconfigPrincipleApplication {
@Autowired
resource和autowired注解的区别private RedisTemplate redisTemplate;
public static void main(String[] args) {
SpringApplication.run(TulingOpenAutoconfigPrincipleApplication.class, args);
}
@RequestMapping("/testRedis")
public String testRedis() {
redisTemplate.opsForValue().set("smlz","smlz"); return "OK";
}
}
2)综上所述我们发现,若整合redis的时候通过传统的整合,进⾏了⼤量的配置,那么我们来看下通过springboot⾃动装配整合的对⽐
导⼊依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
修改yml配置⽂件
直接使⽤(下述代码可以不要配置,为了解决保存使⽤jdk的序列⽅式才配置的)
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)  {                                RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setDefaultSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class));
template.setConnectionFactory(redisConnectionFactory); return template;
}
3)传统整合和springboot⾃动装配优劣势分析
4)⾃动装配原理前的不得不说的⼏个注解
4.1)通过@Import注解来导⼊ImportSelector组件
①:写⼀个配置类在配置类上标注⼀个@Import的注解
@Configuration
@Import(value = {TulingSelector.class})
public class TulingConfig {
}
②:在@Import注解的value值写⾃⼰需要导⼊的组件
在selectImports⽅法中就是你需要导⼊组件的全类名
public class TulingSelector implements ImportSelector {
@Override
public String[] selectImports(AnnotationMetadata annotationMetadata) {        return new String[]{"com.tuling.service.TulingServiceImpl"};
}
}
核⼼代码:
@RestController
public class TulingController {
//⾃动注⼊ tulingServiceImpl
@Autowired
private TulingServiceImpl tulingServiceImpl;
@RequestMapping("testTuling")
public String testTuling() {
return "tulingOk";
}
}
这⾥是没有标注其他注解提供给spring包扫描的
public class TulingServiceImpl {
public void testService() {
System.out.println("我是通过importSelector导⼊进来的service");
}
}
1.2)通过@Import导⼊ImportBeanDefinitionRegistrar 从⽽进来导⼊组件

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。