1.根据配置文件,写加载配置的类。
Springmvc:
application.properties:
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
@Configuration
public class SpringMVCConfig extends WebMvcConfigurerAdapter {
@Autowired
private UserLoginHandlerInterceptor userLoginHandlerInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 判断用户是否登录的拦截器
registry.addInterceptor(userLoginHandlerInterceptor).addPathPatterns("/cart/**");
}
}
Mybatis:
@Configuration
public class MyBatisConfig {
@Autowired
private DataSource dataSource;
@Bean
@ConditionalOnMissingBean //当容器里没有指定的Bean的情况下创建该对象
public SqlSessionFactoryBean sqlSessionFactoryBean() {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
// 设置数据源
sqlSessionFactoryBean.setDataSource(dataSource);
// 设置mybatis的主配置文件
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource mybatisConfigXml = resolver.getResource("classpath:mybatis/mybatis-config.xml");
sqlSessionFactoryBean.setConfigLocation(mybatisConfigXml);
// 设置别名包
sqlSessionFactoryBean.setTypeAliasesPackage("com.xxx.cart.pojo");
return sqlSessionFactoryBean;
}
}
Mapper:
@Configuration
@AutoConfigureAfter(MyBatisConfig.class) //保证在MyBatisConfig实例化之后再实例化该类
public class MapperScannerConfig {
// mapper接口的扫描器
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setBasePackage("com.xxx.cart.mapper");
return mapperScannerConfigurer;
}
}
Redis:
redis.properties:
redis.maxTotal=200
redis.node1.host=127.0.0.1
redis.node1.port=6379
@Configuration
@PropertySource(value = "classpath:redis.properties")
public class RedisSpringConfig {
@Value("${redis.maxTotal}")
private Integer redisMaxTotal;
@Value("${redis.node1.host}")
private String redisNode1Host;
@Value("${redis.node1.port}")
private Integer redisNode1Port;
private JedisPoolConfig jedisPoolConfig() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(redisMaxTotal);
return jedisPoolConfig;
}
@Bean
public ShardedJedisPool shardedJedisPool() {
List<JedisShardInfo> jedisShardInfos = new ArrayList<JedisShardInfo>();
jedisShardInfos.add(new JedisShardInfo(redisNode1Host, redisNode1Port));
return new ShardedJedisPool(jedisPoolConfig(), jedisShardInfos);
}
}
MQ:
1.在导入spring-boot-starter-amqp的依赖;2.在application.properties文件中配置RabbitMQ的连接信息
@Configuration
public class RabbitMQSpringConfig {
@Autowired
private ConnectionFactory connectionFactory;
// 管理
@Bean
public RabbitAdmin rabbitAdmin() {
return new RabbitAdmin(connectionFactory);
}
// 声明队列
@Bean
public Queue xxxCartLoginQueue() {
// 默认就是自动声明的
return new Queue("xxx-CART-LOGIN-QUEUE", true);
}
// 声明队列
@Bean
public Queue xxxCartOrderSuccessQueue() {
// 默认就是自动声明的
return new Queue("xxx-CART-ORDER-SUCCESS-QUEUE", true);
}
}
Dubbo:
Dubbo目前只能使用xml配置的方式,所以我们需要保留xml,并且需要将该xml加入到现有的Spring容器中才能生效。
1.将dubbo目录以及下面的xml配置文件拷贝到taotao-cat-springboot中
2.将dubbo的xml文件加入到spring容器
入口类
设置事务管理
在Spring Boot中推荐使用@Transactional注解来申明事务。
首先需要导入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
当引入jdbc依赖之后,Spring Boot会自动默认分别注入DataSourceTransactionManager或JpaTransactionManager,所以我们不需要任何额外配置就可以用@Transactional注解进行事务的使用。
在Service中添加@Transactional注解: