springboot-01
springboot学习笔记-01
这篇文章总结了springboot学习的一些总结,废话不多说,干货
springboot新增配置
1.@SpringBootApplication
这是一个组合注解:@Configuration、@EnableAutoConfiguration、@ComponentScan
@EnableAutoConfiguration 让 Spring Boot 根据类路径中的 jar 包依赖为当前项目进行自动配置
@SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类,
并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。
@ComponentScan,
扫描当前包及其子包下被@Component,@Controller,@Service,@Repository注解标记的类并纳入到spring容器中进行管理。
是以前的context:component-scan(以前使用在xml中使用的标签,用来扫描包配置的平行支持)
注意,你写的代码有注释的部分一定要写在有@SpringBootApplication注解的根目录下
2.@RestController注解
也是一个组合注解包括:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
里面有@Controller@ResponseBody,所以说它的返回值就是响应信息,简化了spring mvc中多个注解的写法
其他三个注解还未研究,以后有机会在研究,正在向spring cloud进军
3. .yml文件
配置文件文件的写法更加清晰,可以一目了然的看到配置信息,可以集成多个配置,服务器,数据源,日志记录,spring
mybatis,目前就了解这么多,这些配置够用就行
4.tomcat内置
配置.yml文件的服务器配置即可
###5.banner.txt文件
这个文件可以改变springboot运行时的图片,从网上看到其他人写好的不错的,给出
////////////////////////////////////////////////////////////////////
// _ooOoo_ //
// o8888888o //
// 88" . "88 //
// (| ^_^ |) //
// O\ = /O //
// ____/`---'\____ //
// .' \\| |// `. //
// / \\||| : |||// \ //
// / _||||| -:- |||||- \ //
// | | \\\ - /// | | //
// | \_| ''\---/'' | | //
// \ .-\__ `-` ___/-. / //
// ___`. .' /--.--\ `. . ___ //
// ."" '< `.___\_<|>_/___.' >'"". //
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
// \ \ `-. \_ __\ /__ _/ .-` / / //
// ========`-.____`-.___\_____/___.-`____.-'======== //
// `=---=' //
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
// 佛祖保佑 永不宕机 永无BUG //
////////////////////////////////////////////////////////////////////
5.thymeleaf页面
所需依賴
<!--thymeleaf所需依赖-->
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>
注意使用问题在标签中加上xmlns:th=“http://www.thymeleaf.org”
关于JSP页面的问题,请参考添加链接描述
springboot依赖
1.基础依赖
这里使用版本为2.2.0.M4作为参考
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.M4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.springboot</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
</project>
2.thymeleaf依赖
<!--thymeleaf所需依赖-->
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>
3.mysql依赖
<!--引入mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
4.tk.mybatis依赖
<!--tkmybatis加快开发mybatis开发效率-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
5.github分页插件
<!--分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
6.服务器热部署依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
</dependency>
7.逆向工程,所需要的maven插件
<!--springboot一个maven的文件自动生成实体类,DAO,XML文件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.4</version>
</dependency>
</dependencies>
</plugin>
8.完整的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--继承-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.ymh.</groupId>
<artifactId>hello-spring-boot</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>hello-spring-boot</name>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--thymeleaf所需依赖-->
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
<!--引入mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--tkmybatis加快开发mybatis开发效率-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
<!--分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--springboot一个maven的文件自动生成实体类,DAO,XML文件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.4</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
配置文件application.yml
1.日志配置
一般至指定位置就可,下面的代码是指定在项目的src同级目录的logs下创建mylog日志文件
logging:
file: logs/mylog
2.服务器配置
#端口,context-path访问时需要在之前加入/hotel
server:
port: 8080
servlet:
context-path: /hotel
3.spring的thymeleaf和数据源配置datasource
spring:
thymeleaf:
cache: false #\u5F00\u53D1\u65F6\u5173\u95ED\u7F13\u5B58,\u4E0D\u7136\u6CA1\u6CD5\u770B\u5B9E\u65F6\u9875\u9762
mode: LEGACYHTML5 #\u975E\u4E25\u683C\u7684HTML
encoding: utf-8
servlet:
content-type: text/html
datasource:
url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
initial-size: 1
min-idle: 1
max-active: 20
test-on-borrow: true
4.mybatis配置
mybatis:
type-aliases-package: com.ymh.hello.spring.boot.pojo
mapper-locations: classpath:mapper/*.xml
5.完整的application.yml
server:
port: 8080
servlet:
context-path:
logging:
file: logs/mylog
spring:
thymeleaf:
cache: false #\u5F00\u53D1\u65F6\u5173\u95ED\u7F13\u5B58,\u4E0D\u7136\u6CA1\u6CD5\u770B\u5B9E\u65F6\u9875\u9762
mode: LEGACYHTML5 #\u975E\u4E25\u683C\u7684HTML
encoding: utf-8
servlet:
content-type: text/html
datasource:
url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
initial-size: 1
min-idle: 1
max-active: 20
test-on-borrow: true
mybatis:
type-aliases-package: com.ymh.hello.spring.boot.pojo
mapper-locations: classpath:mapper/*.xml
目前就学了这么多,再学新的话,继续发布
逆向工程的配置
1.在src/main/java的同级目录下创建tk.mybatis目录,创建接口继承tk.mybatis的接口
继续创建一个接口文件MyMapper,继承Mapper,MySqlMapper
为什么在这个目录创建呢?因为这是别人封装好的,不能被spring扫描到,否则报错
2.在resources目录下创建generator目录,编写关键配置文件generatorConfig.xml
为什么在这个位置创建呢?
在pom.xml的插件配置中
<!--springboot一个maven的文件自动生成实体类,DAO,XML文件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<!--就是这里指定了位置-->
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.4</version>
</dependency>
</dependencies>
这个位置可以自己设定,按个人喜好吧
generatorConfig.xml配置,示例代码讲得很清楚,还有其他的一些属性,需要用到再学.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!--引入数据源配置-->
<properties resource="jdbc.properties"/>
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="beginningDelimiter" value=""/>
<property name="endingDelimiter" value=""/>
<!--配置tk.mybatis插件-->
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.MyMapper"></property>
</plugin>
<!--配置数据库连接-->
<jdbcConnection
driverClass="${mysql.driver}"
connectionURL="${mysql.url}"
userId="${mysql.user}"
password="${mysql.password}">
</jdbcConnection>
<!--配置实体类存放路径-->
<javaModelGenerator
targetPackage="com.ymh.hello.spring.boot.pojo"
targetProject="src/main/java">
</javaModelGenerator>
<!--配置XML存放路径-->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources" />
<!--配置DAO存放路径-->
<javaClientGenerator targetPackage="com.ymh.hello.spring.boot.mapper"
targetProject="src/main/java"
type="XMLMAPPER" />
<!-- 配置生成的表 %代表生成所有的表 -->
<table tableName="%">
<!--mysql配置 identity支持自动生成 sqlStatement设置为mysql数据库-->
<generatedKey column="id" sqlStatement="Mysql" identity="true" />
</table>
</context>
</generatorConfiguration>
还需要一个数据源的文件jdbc.properties,给出,这里是mysql数据库,oracle数据库用它对应的驱动和用户名即可
mysql.driver=com.mysql.cj.jdbc.Driver
#mysql数据库驱动
mysql.url=jdbc:mysql://localhost/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT
#连接的数据库,后面一定要加上这些属性,否则运行会报错
mysql.user=root
#自己的用户名
mysql.password=root
#自己的密码
3.测试
示例代码
package com.ymh.hello.spring.boot;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ymh.hello.spring.boot.mapper.TbItemMapper;
import com.ymh.hello.spring.boot.mapper.TbUserMapper;
import com.ymh.hello.spring.boot.pojo.TbItem;
import com.ymh.hello.spring.boot.pojo.TbUser;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.web.server.LocalServerPort;
import org.springframework.http.ResponseEntity;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import java.net.URL;
import java.util.List;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
/*@SpringBootTest 属性 把单元测试装载到Spring boot配置中
* */
@Rollback
@Transactional
@RunWith(SpringRunner.class)
@SpringBootTest(classes = HelloSpringBootApplication.class,webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class HelloSpringBootApplicationTests {
@Autowired
private TbUserMapper tbUserMapper;
@Test
public void testselect() {
List<TbUser> tbUsers = tbUserMapper.selectAll();
for (TbUser tbUser : tbUsers) {
System.out.println(tbUser.getName()+tbUser.getPassword());
}
}
@Test
public void page(){
PageHelper.startPage(1,5);
Example example = new Example(TbUser.class);
PageInfo<TbUser> pageInfo= new PageInfo<>(tbUserMapper.selectByExample(example));
List<TbUser> list = pageInfo.getList();
for (TbUser tbItem : list) {
System.out.println(tbItem.getName());
}
}
}
运行结果
张三123456
王五123456
张伟123456
李娜123456
李磊123456
剑豪111111
2019-07-05 18:21:01.188 INFO 21108 --- [ main] o.s.t.c.transaction.TransactionContext : Rolled back transaction for test:
2019-07-05 18:21:01.190 INFO 21108 --- [ main] o.s.t.c.transaction.TransactionContext : Began transaction (1) for test context
张三
王五
张伟
李娜
李磊
2019-07-05 18:21:01.405 INFO 21108 --- [ main] o.s.t.c.transaction.TransactionContext : Rolled back transaction for test:
2019-07-05 18:21:01.414 INFO 21108 --- [ Thread-4] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService
2019-07-05 18:21:01.419 INFO 21108 --- [ Thread-4] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2019-07-05 18:21:01.452 INFO 21108 --- [ Thread-4] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
Process finished with exit code 0
运行成功,ok到此结束
今天就先这样,继续学习积累,向springcloud进军!