一.一些常用的配置
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類即可.