springboot学习笔记-2 一些常用的配置以及整合mybatis
一.一些常用的配置
1.1 使用没有父POM的springboot
通过添加scope=import的依赖,仍然能获取到依赖管理的好处:
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.4.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
1.2 修改jdk的编译版本
注意,springboot的默认的编译版本为1.6.我们可以在pom.xml中做出如下设置:
<properties>
<java.version>1.8</java.version>
</properties>
1.3 @componentScan注解
通常,我们可以将main类(有main方法的类)放于根包中,即如下所示:

这样写的好处是使用@ComponentScan注解的时候,在不声明任何参数的时候,默认是会扫描其同一个包,和子包下的类,这样就可以扫描到Controller,Service等类了.
需要注意,@Import可以导入其他配置类,@ImportResource可以导入其他配置文件.,不过可以通过@ComponentScan去搜索其他bean,包括配置类.
1.4 禁用特定的自动配置
使用@EnableAutoConfiguation的exclude属性即可完成:
@Configuration
@ComponentScan
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
public static void main(String[] args) {
SpringApplication.run(MyConfiguration.class,args);
}
}
1.5 @SpringBootApplication注解
@springbootapplication注解:它相当于以默认属性使用@Configuration, @EnableAutoConfiguration 和@ComponentScan
可以用于简化开发.
二.SpringBoot的热部署插件spring-boot-devtools
热部署插件主要的作用是避免在修改classpath下面的代码的时候,需要频繁重新启动服务器.spring-boot-devtools将会自动监视classpath下面代码的变化,一旦发生了改变,将会重新部署到服务器中.
2.1 添加maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
2.2 修改maven插件.添加配置.
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--fork : 如果没有该项配置,则devtools不会起作用,即应用不会restart -->
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
2.3 重新启动
三.Spring整合mybatis
3.1 引入mybatis的依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
3.2 在Application类上面声明Mapper包的扫描

3.3 application.properties中书写数据源
这里需要注意的是,springboot在启动服务器的时候会去加载classpath下面的application.properties或application.yml文件,并根据文件的设置为对应的属性赋值.在src/main/resources下建立application.properties并书写以下代码去配置c3p0数据源:
##c3p0
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
c3p0.user=root
c3p0.password=root
c3p0.driverClass=com.mysql.jdbc.Driver
spring.datasource.type=com.mchange.v2.c3p0.ComboPooledDataSource
3.4 建立mybatis的配置类,配置c3p0数据源和sessionfactory
@Configuration
public class DataSourceConfig {
@Bean(name = "dataSource")
@Primary
@ConfigurationProperties(prefix = "c3p0")
public DataSource dataSource(){
return DataSourceBuilder.create().type(com.mchange.v2.c3p0.ComboPooledDataSource.class).build();
} @Bean
public SqlSessionFactoryBean sqlSessionFactory() {
SqlSessionFactoryBean bean=new SqlSessionFactoryBean();
bean.setDataSource(dataSource());
return bean;
}
}
3.5 编写Mapper借口和Mapper配置文件

<mapper namespace="com.xyy.mapper.DogMapper">
<select id="findAllDogs" resultType="com.xyy.domain.Dog">
SELECT * FROM dog;
</select>
<select id="findById" resultType="com.xyy.domain.Dog" parameterType="int">
SELECT * FROM dog WHERE id=#{id};
</select>
<insert id="saveDog" parameterType="com.xyy.domain.Dog">
INSERT INTO dog(age,name) VALUES(#{age},#{name});
</insert>
</mapper>
3.6 编写service
注意涉及到增删改的操作需要用@Transactional开启事务
@Service
public class DogService {
@Autowired
private DogMapper dogMapper; public Dog findById(Integer id) {
return dogMapper.findById(id);
}
public List<Dog> findAll() {
return dogMapper.findAllDogs();
}
@Transactional
public void saveDog(Dog dog) {
dogMapper.saveDog(dog);
}
}
3.7 编写Controller
@Controller
public class DogController {
@Autowired
private DogService dogService; @RequestMapping("/findById/{id}")
@ResponseBody
public Dog findDogById(@PathVariable("id") Integer id) {
return dogService.findById(id);
}
@RequestMapping("/findAll")
@ResponseBody
public List<Dog> findAll() {
return dogService.findAll();
}
@RequestMapping("/saveDog/{name}/{age}")
public String saveDog(@PathVariable("name")String name,@PathVariable("age")String age) {
Dog dog=new Dog();
dog.setName(name);
dog.setAge(age);
dogService.saveDog(dog);
return "addSuccess";
}
}
测试,直接运行Application类即可.
springboot学习笔记-2 一些常用的配置以及整合mybatis的更多相关文章
- SpringBoot学习笔记(1):配置Mybatis
SpringBoot学习笔记(1):配置Mybatis 反思:如果自己写的笔记自己都看不懂,那就不要拿出来丢人现眼! IDEA插件 Free MyBatis Plugin插件可以让我们的MyBatis ...
- SpringBoot学习笔记<一>入门与基本配置
毕业实习项目技术学习笔记 参考文献 学习视频 2小时学会Spring Boot:https://www.imooc.com/learn/767 学习资料 SpringBoot入门:https://bl ...
- Hibernate学习笔记二:常用映射配置
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6760895.html 一:单向一对一 常用唯一外键的方法来配置单向一对一关系. 1:实体关系 类A中有类B对象 ...
- springboot 学习笔记(二)--- properties 配置
springboot可以提供了多种方式配置properties. 一.Java System.setProperty(k, v) System.setProperty("myname&quo ...
- springboot学习笔记:4.logback日志配置
springboot中日志组件推荐使用logback: 由于springboot内置了logback,所以可以直接在application.properties中配置:如果要功能丰富些,则配置下log ...
- Springboot学习笔记(六)-配置化注入
前言 前面写过一个Springboot学习笔记(一)-线程池的简化及使用,发现有个缺陷,打个比方,我这个线程池写在一个公用服务中,各项参数都定死了,现在有两个服务要调用它,一个服务的线程数通常很多,而 ...
- SpringBoot学习笔记
SpringBoot个人感觉比SpringMVC还要好用的一个框架,很多注解配置可以非常灵活的在代码中运用起来: springBoot学习笔记: .一.aop: 新建一个类HttpAspect,类上添 ...
- SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用
SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用 Spring Boot Admin是一个管理和监控Spring Boot应用程序的应用程序.本文参考文档: 官 ...
- SpringBoot学习笔记(3):静态资源处理
SpringBoot学习笔记(3):静态资源处理 在web开发中,静态资源的访问是必不可少的,如:Html.图片.js.css 等资源的访问. Spring Boot 对静态资源访问提供了很好的支持, ...
随机推荐
- C#_Switch语句的内部实现
Switch的C#内部实现 https://www.cnblogs.com/Interkey/p/3730432.html 在IL汇编语言中的Switch指令 -- 按照标号来进行跳转(和goto语句 ...
- Spring AOP 报错org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'XXXXXX' defined in class path resource..........
完整报错如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'befo ...
- JAVA之运算符优先级
Java运算符优先级从高到低 运算符 结合性 [ ] . ( ) (方法调用) 从左向右 ! ~ ++ -- +(一元运算) -(一元运算) 从右向左 * / % 从左向右 + - 从左向右 < ...
- Hyperledger Fabric 1.2 --- Chaincode Operator 解读和测试(二)
本文接上一节是测试部分 搭建一个模拟测试环境 作者将fabric release1.2工程中的 example-e2e进行了改造来进行本次实验: (1)首先我们将examples/e2e_cli/sc ...
- HTML常用头部变量
简例:访问baidu的头部 GET /?tn=98827400_hao_pg HTTP/1.1 Host: www.baidu.com Connection: keep-alive Cache-Con ...
- maven实战读书笔记(三)
maven将一系列的步骤都封装为一系列的插件,运行命令后一系列的插件运行
- 《[C#] int与System.Int32有什么区别》
最近园里的TeamOne写了一篇<[C#] int与System.Int32有什么区别>,发现里面有不少精彩的评论,所以忍不住想这篇文章总结一下:> 本文的主要参考资料: 1.< ...
- 2018软工实践—Beta冲刺(3)
队名 火箭少男100 组长博客 林燊大哥 作业博客 Beta 冲鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 软件接口编写修正 自动化测试脚本编写 技术文稿更新 展示GitHub当 ...
- Sdn - 基础题试水
## sdn - 初步分析基于OpenFlow的SDN网络控制功能 题目要求: 1.下发流表项实现 h1 和 h2,h2 和 h3 不能互通.h1 和 h3 可互通. 2.结合捕获的 SDN 相关协议 ...
- 第1阶段冲刺成果—简单运算game(APP)
第1阶段冲刺成果 由于我们团队都没有Android的基础,所以在这一块花了很长的时间去学习探索,就连简单的Android的电脑配置也花了很长的时间,所以其他的DONE的都没有完成,这是失败的地方.但是 ...