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 对静态资源访问提供了很好的支持, ...
随机推荐
- 动态加载与插件系统的初步实现(一):反射与MEF解决方案
涉及内容: 反射与MEF解决方案 AppDomain卸载与代理 WinForm.WcfRestService示 PRRT1: 反射实现 插件系统的基本目的是实现宿主与组件的隔离,核心是作为接驳约定的接 ...
- systemctl start nginx timeout
昨儿个研究docker ,搭建私有仓库.想着用nginx代理一下仓库地址.方式使用80端口,于是愉快的下载,编辑,安装nginx.创建nginx.service作为系统启动服务. 结果......,多 ...
- python-flask-ssti(模版注入漏洞)
SSTI(Server-Side Template Injection) 服务端模板注入 ,就是服务器模板中拼接了恶意用户输入导致各种漏洞.通过模板,Web应用可以把输入转换成特定的HTML文件或者e ...
- spring boot 使用及最佳实践
第一部分,spring boot 文档 Spring boot的使用 使用maven进行构建 用户可以通过继承spring-boot-starter-parent来获取默认的依赖. l 默认java ...
- React Native移动开发实战-4-Android平台的适配原理
打开Android开发工具Android Studio,选择菜单 Open an existing AndroidStudio project,打开ch04项目的android文件夹,如图5.8所示. ...
- IPC_Binder_java_2
title: IPC_Binder_java_2 date: 2017-07-04 14:47:55 tags: [IPC,Binder] categories: [Mobile,Android] - ...
- Metasploit拿Shell
进入metasploit系统 msfconsole Nmap端口扫描 nmap –sV IP(或者域名),如果机器设置有防火墙禁ping,可以使用nmap -P0(或者-Pn) –sV IP(或者域名 ...
- python3去除字符串中括号及括号里面的内容
a = """ <option value="search-alias=arts-crafts-intl-ship">Arts & ...
- ubuntu安装中文输入法必看
ubuntu安装中文输入法必看以下两篇文章,按照顺序来做: http://www.2cto.com/os/201207/144189.html http://www.cnblogs.com/slide ...
- Java将json字符串转成map
Map<String, Object> map = (Map<String, Object>) JSONUtils.parse(result)