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进军!

发布了8 篇原创文章 · 获赞 0 · 访问量 1480

猜你喜欢

转载自blog.csdn.net/Modesty_Boy/article/details/94749717