spring boot的优点
配置简单!!!配置简单!!!配置简单!!!
1,可以创建独立的spring应用程序。
2,嵌入tomcat jetty 容器,不需要部署war包。
3,简化maven配置。
4,根据项目依赖自动配置spring框架
5,没有xml配置文件
spring boot的注解
- @RestController
注解告诉Spring以字符串的形式渲染结果,并直接返回给调用者=@Controller+@Responsbody - @RequestMapping
注解提供路由信息,告诉Spring任何来自”/”路径的HTTP请求都应该被映射到 home 方法 - @Configuration
加上该注解,等价于在XML中配置beans 用@Bean注解等价于xml配置bean - @EnableAutoConfiguration
告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring,spring boot 建议只含有一个带有该注解的类 - @CompoentScan
常使用 @ComponentScan 注解搜索beans,并结合 @Autowired 构造器注入。 - @SpringBootApplication
=@Configuration + @EnableAutoConfiguration + @CompoentScan - @vlaue
在初始化时很方便的对Bean的入参变量进行赋值。还有一种写法:${some.proptery.key}”,即将property的key值写在花括号中。
@Value("${mybatis.configLocation}")
private String configLocation;
spring boot 集成mybatis
- 使用mybatis官方提供的mybatis-spring-boot-starter
在pom.xml加依赖:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
在application.yml中添加配置:
mybatis:
mapperLocations: classpath:mappers/*.xml
typeAliasesPackage: com.pinganfu.dayu.dal.domain.auto
basePackage: com.pinganfu.dayu.dal.mapper
configLocation: mybatis-config.xml
或在.properties中增加配置:
mybatis.mapperLocations=classpath*:mappers/**/*.xml
mybatis.typeAliasesPackage=com.pinganfu.dayu.dal.domain
mybatis.configuration.map-underscore-to-camel-case=true
pagehelper.offset-as-page-num=true
- mybatis-spring方式
需要加mybatis mybatis-spring 依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
然后编写MybatisConfig配置类
@Configuration
@EnableTransactionManagement
public class MyBatisConfig implements TransactionManagementConfigurer {
@Value("${mybatis.configLocation}")
private String configLocation;
@Value("${mybatis.typeAliasesPackage}")
private String typeAliasesPackage;
@Value("${mybatis.mapperLocations}")
private String mapperLocations;
@Autowired
DataSource dataSource;
@Bean(name = "sqlSessionFactory")
public SqlSessionFactory sqlSessionFactoryBean() {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setTypeAliasesPackage(typeAliasesPackage);
//bean.setPlugins(new Interceptor[] { pageHelper() });
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try {
bean.setConfigLocation(resolver.getResource(configLocation));
bean.setMapperLocations(resolver.getResources(mapperLocations));
return bean.getObject();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
@Bean
@Override
public PlatformTransactionManager annotationDrivenTransactionManager() {
return new DataSourceTransactionManager(dataSource);
}
}
上面代码创建了一个SqlSessionFactory和一个SqlSessionTemplate,为了支持注解事务,增加了@EnableTransactionManagement注解,并且反回了一个PlatformTransactionManagerBean。
如果我们想要扫描MyBatis的Mapper接口,我们就需要配置这个类,这个配置我们需要单独放到一个类中:
@Configuration
@AutoConfigureAfter(MyBatisConfig.class)
public class MyBatisMapperScannerConfig {
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
mapperScannerConfigurer.setBasePackage("com.pinganfu.dayu.dal.mapper.auto");
return mapperScannerConfigurer;
}
}