-
2020-11-22 15:15:52更多相关内容
-
SpringBoot项目实战入门详细教程
2022-01-15 10:34:10 -
SpringBoot实战教程:SpringBoot企业级线上商城项目讲解
2021-06-16 03:13:29无需复杂的操作步骤,仅需 2 秒就可以启动这个完整的商城项目最终的实战项目是一个企业级别的 Spring Boot 大型项目,对于各个阶段的 Java 开发者都是极佳的选择实践项目页面美观且实用,交互效果完美教程详细开发... -
SpringBoot项目实战-高校宿舍管理系统-前后端分离项目
2021-06-20 15:17:581.项目概况 提到宿舍,现在无论是学校,还是工厂,都是在熟悉不过的了,学生宿舍楼,职工教员工,职工宿舍楼等等,每一栋楼房都有很多的房间,每个宿舍分配了多少个床位,住着什么人,那些床位是空的,那些房间... -
SpringBoot实战视频教程
2021-06-10 22:04:16SpringBoot实战视频培训教程,该课程由浅入深实战SpringBoot的知识体系,几乎涵盖了目前微服务项目中常见的业务模块与典型的问题实战,基于SpingBoot整合第三方依赖实战解决常见的模块与问题,如Redis,RabbitMQ,... -
Springboot项目实战入门(一)
2020-06-28 11:03:36(1)创建Springboot项目 File-》New Project-》Spring Initializr,填写完项目有关信息后,一定要注意,选择以下模板: 注意:一般项目创建后Maven会自动下载依赖,如果出现下载很慢的情况(说明是外网下载),推荐...最近看了很多Springboot的教学视频,感觉都太长了,而且没有项目的实战。今天根据一个博客主写一个实现增删改查的简单用户系统,源码可以参考第二期的文章。本次项目搭建使用Springboot+Mybatis+Mysql。第一期只实现用户登录的功能。
(1)创建Springboot项目
File-》New Project-》Spring Initializr,填写完项目有关信息后,一定要注意,选择以下模板:
注意:一般项目创建后Maven会自动下载依赖,如果出现下载很慢的情况(说明是外网下载),推荐采用阿里云镜像,配置方法自行百度。
(2)连接数据库
idea中有连接数据库的功能,连接数据库后会获得数据库的信息,就可以不用打开数据库服务端了。具体操作如下:
连接数据库时填写:
连接成功可以看到:
项目连接数据库的配置文件编写:数据库连接后还需要将数据库数据导入项目,配置文件(我比较喜欢yml配置,所以将全局配置文件application.properties改为yml后缀)编写如下:
注意:数据库的表需要自己先建好,然后填写自己数据库的信息与端口。本人使用的是3305端口,与默认的3306不一致。(3)搭建项目结构
由于一般项目需要采用MVC架构,项目架构搭建如下:
项目文件xin01搭建展示:
资源文件resources搭建展示:
pom配置文件展示(填写mysql连接jar包的版本):<?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 https://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.3.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.huang</groupId> <artifactId>xin01</artifactId> <version>0.0.1-SNAPSHOT</version> <name>xin01</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-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.26</version> <scope>runtime</scope> </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>--> <!-- </exclusions>--> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
一般会自动创建,注意这里由于有一个冲突,注释了test的某个标签。
注意:没有的文件自己创建,千万不能漏文件或者写错文件名称。
(4)具体代码编写
1.前端页面html编写
error.html<!--登录失败页面--> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>error</title> </head> <body> <h1>登录失败!</h1> </body> </html>
index.html
<!--首页--> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 你好springboot,这是XXX的第一个springboot项目。 </body> </html>
login.html(这个前端页面需要提交表单数据,较为重要)
<!--登录页面--> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>login</title> </head> <body> <!--实现表单提交--> <form role="form" action = "/loginIn" method="post"> 账号:<input type="text" id="name" name = "name"> <br> 密码:<input type="password" id = "password" name = "password"> <br> <input type="submit" id = "login" value = "login"> </form> </body> </html>
success.html
<!--登录成功页面--> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>success</title> </head> <body> <h1>登录成功!</h1> </body> </html>
2.UserBean类编写
UserBeanpackage com.huang.xin01.bean; /* 用户实体类,对应数据库的user表 */ public class UserBean { private int id; private String name; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "UserBean{" + "id=" + id + ", name='" + name + '\'' + ", password='" + password + '\'' + '}'; } }
3.HelloController类、LoginController类编写
HelloControllerpackage com.huang.xin01.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* 首页控制层 */ @Controller public class HelloController { @RequestMapping("/index") public String hello(){ return "index"; } }
LoginController
package com.huang.xin01.controller; import com.huang.xin01.bean.UserBean; import com.huang.xin01.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /* 登录功能的控制层 */ @Controller public class LoginController { //调用userService,并且将其放入容器防止耦合 @Autowired UserService userService; //登录页面 @RequestMapping("/login") public String show(){ return "login"; } //表单按照post提交后的控制 @RequestMapping(value = "/loginIn",method = RequestMethod.POST) public String login(String name,String password){ UserBean userBean = userService.loginIn(name,password); if(userBean!=null){ return "success"; }else{ return "error"; } } }
4.UserMapper接口、UserMapper.xml配置文件、application.yml全局配置文件编写
UserMapperpackage com.huang.xin01.mapper; import com.huang.xin01.bean.UserBean; import org.springframework.stereotype.Repository; /* Dao层,负责数据库的接口,具体通过Mybatis配置文件实现 */ //@Repository public interface UserMapper { UserBean getInfo(String name,String password); }
UserMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <!--Dao层的具体实现,采用Mybatis--> <mapper namespace="com.huang.xin01.mapper.UserMapper"> <select id="getInfo" parameterType="String" resultType="com.huang.xin01.bean.UserBean"> SELECT * FROM user WHERE name = #{name} AND password = #{password} </select> </mapper>
application.yml
spring: datasource: name: xin1 url: jdbc:mysql://localhost:3305/xin1 username: root password: root driver-class-name: com.mysql.jdbc.Driver #利用jdbc连接数据库 mybatis: mapper-locations: classpath:mapper/UserMapper.xml type-aliases-package: com.huang.xin01.bean #指定mybatis扫描的xml文件
5.UserService接口、UserServiceImpl类编写
UserServicepackage com.huang.xin01.service; import com.huang.xin01.bean.UserBean; import org.springframework.stereotype.Repository; /* 服务层接口,具体由serviceImpl类实现 */ //@Repository public interface UserService { UserBean loginIn(String name,String password); }
UserServiceImpl
package com.huang.xin01.service.serviceImpl; import com.huang.xin01.bean.UserBean; import com.huang.xin01.mapper.UserMapper; import com.huang.xin01.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /* 服务层,调用Dao层实现登录功能 */ @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public UserBean loginIn(String name, String password) { return userMapper.getInfo(name, password); } }
6.启动类Xin01Application类修改(加上注解@MapperScan(“com.huang.xin01.mapper”))
Xin01Applicationpackage com.huang.xin01; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /* 项目的启动程序,必须加上@MapperScan注解扫描mapper配置文件 */ @SpringBootApplication @MapperScan("com.huang.xin01.mapper") public class Xin01Application { public static void main(String[] args) { SpringApplication.run(Xin01Application.class, args); } }
7.测试类Xin01ApplicationTests编写(test包里的)
Xin01ApplicationTestspackage com.huang.xin01; import com.huang.xin01.bean.UserBean; import com.huang.xin01.service.UserService; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; /* 测试类,发现依赖的exclusions与RunWith冲突,已经注释 */ @RunWith(SpringRunner.class) @SpringBootTest class Xin01ApplicationTests { @Autowired UserService userService; @Test void contextLoads() { UserBean userBean = userService.loginIn("huang","huang"); System.out.println("该用户id为"+userBean.getId()); } }
(5)项目测试
注意:有些版本对于@Autowired注解会报红,可以选择设置
推荐将这个改动变为默认设置。
1.test测试
运行Test方法,观察控制台输出结果,正确如下:
2.项目测试
运行启动程序,在浏览器输入localhost:8080/login效果如下:
登录成功
总结
由于每个人各种配置的版本不同,可能会存在一些小问题,欢迎大家把这些问题提出在评论区,博主会尽快回答。
-
springboot项目开发实战
2021-06-16 15:55:59文章目录springboot项目开发实战之后端流程详解一、创建简单的springboot之web项目1、简单springboot框架环境搭建2、相关jar包的导入3、配置文件yaml的设置4、框架结构的梳理如过滤器和拦截器5、代码结构的书写1)...文章目录
springboot项目开发实战之后端流程详解
一、创建简单的springboot之web项目
1、简单springboot框架环境搭建
step1:
step2:
step3:
step4:
step5:
备注:所有的资源配置文件都要放到resource下面,如后面xxxMybatis.xml也是要在此目录下创建文件夹放置的,这样正规;2、相关jar包的导入
3、配置文件yaml的设置
无
4、框架结构的梳理如过滤器和拦截器
无
5、代码结构的书写
1)controller层书写
创建User类
创建controller
6、搭建此项目出现的问题小结
第一:注意搭建环境时候的目录结构设置;
第二:注意搭建环境的启动类的位置;
第三:注意我们实体化类时候,务必构造器和get,set,tostring方法一起写,防止出错找不到;因为框架中构造器好像是依赖get方法的;
第四:注意返回的参数类型,要在响应头中可以查看到;二、创建简单的springboot之web项目基础上用打包的jar包进行cmd启动
1、web项目打包为jar包
打包所到的目录位置描述参考如下:
2、启动web项目的jar包
target目录下:
注意:之前的工具eclipse,都是需要把项目打包jar后,然后部署到tomcat中,启动tomcat后才可以进行访问;而springboot中是没有部署到tomcat这个环节,我认为是因为springboot项目中自带了tomcat,所以就可以自动的不需要部署了直接访问;
至于调试的时候为何都是直接调试就可以了,暂时不知道;
eclipse的打包流程回头再补充对比再此;三、创建简单的springboot之web项目基础上引入框架结构即引入框架相关类形成体系的类关系结构
原理说明:因为简单的web项目并不足以支撑我们复杂的业务结构;因此引入了别人写好的框架类,这些框架类可以有效的实现我们的业务结构层次清晰如controller层,service层,dao层,entity层或者domain层,以及类之间的解耦性,所以我们要引入这些类,就需要在pom导入jar包和配置文件(springMVC中是xml形式的配置文件来实例化类及串联起各个类之间的关系及类中参数的设置,而springBoot中是用java类文件加注解充当配置文件来实例化类及串联起各个类之间的关系,而用yml文件来进行各个类中参数的配置);
1、常用框架jar包导入:
1)yml中有提示需要的jar包
yaml文件配置参数的方式时候,要引入配置执行器jar包,因为只有引入它了,yaml文件中写配置时候,才会有提示;当然你不配置它也不会影响运行;具体描述如下网站
2)
2、常用框架配置文件注解:
1)springboot中模拟springmvc中xml配置文件产生的注解:
1、@Configuration作用于类上,相当于一个xml配置文件;
2、@Bean作用于方法上,相当于xml配置中的;
3、@Import注解 在创建配置文件之后可以引入其它的配置文件
4、@ComponentScan(“com.sxt”)配置扫描(上面启动类已经举例)
[1、我的理解是,它就是tomcat服务器启动时候,会首先加载的容器文件,(在springboot项目中,就是这个项目启动后,带动了tomcat服务器启动,然后首先会加载的容器文件,)然后这个容器中各个相关的框架类会根据框架依赖逻辑相继加载,各个类的参数也会在设置后相继加载;至于springboot项目的启动流程具体始末是什么,后续再论]
(2、我的理解是,它就是框架类的实例化,或者自定义类的实例化)
(3、我的理解是,它就是各个配置文件之间的串起来所用注解)
(4、我的理解是,它就是启动类要寻找加载的相关文件夹和文件)
上面配置的方式中要给实例化的类注入参数的方式,是在此需要参数注入的对象上面使用注解@ConfigurationProperties,然后再yml文件配置中注入参数即可:
2)springboot中模拟springmvc中xml配置文件产生的注解基础上,进行框架改良升级,即等价于用一个注解可以实例化对象,用一个注解就可以在yml中进行参数配置;
1、@Component,相当于xml配置文件+bean;
2、@ConfigurationProperties(prefix=“student”);相当于xml中的参数set设置;
3、@Autowired,相当于容器的注入,即get设置;
注意:@ConfigurationProperties注解虽然对yml也适用,但是yml里面书写时候要注意其相应格式,只有其自己的格式才会生效;具体见下面3所述;此简述如下,要key变色说明格式才对:
4、@Validated,相当于对注入值进行格式的校验;
5、@Email,就是对注入值进行格式的校验为邮箱的格式校验,即配合4来完成,具体的代码书写如下,注意此4和5只能是@ConfigurationProperties(prefix=“student”);这种类参数设置的方式;不能是@Value这种主动获取类参数的设置方式,否则校验是无效的;
6、注意的是校验注解,除了jdk自带的注解外,也可以是第三方插件的注解,也可以是自己编写的注解;
3、常用框架相关类参数配置,当然配置也包括相关类参数的启用设置(涉及到yml赋值两种配置语法):
application.properties参数赋值配置语法一:见上面2),另外其类的各种数据格式在yml中的赋值语法如下:
注意1:有一点要明白,既然左边加注解后已经到容器中了,后面参数配置后可以给对象设置值,说明右边的yml文件也是被读入到框架容器中了,不然二者怎么对接的上呢!
注意2:配置也包括相关类参数的启用设置,意思是有些jar包引入后,因为是框架内部对相关类参数已经进行了设置,所以我们在yml文件中只需要对参数进行启用设置即如xxx.enable=true;即可;举例如插件thymeleaf;
application.yml参数赋值配置语法二:
4、常用框架相关类参数配置(涉及到yml赋值两种配置语法)之扩展:
1)扩展1,不涉及到xml的纯springboot场景:
上面的注入,所有的配置都是写在appliaction.properties或application.yml这两种固定名字的文件里,要是我们想要写在名字不一样的文件中怎么办?
1、@PropertySource(“classpath:student.properties”)
注意:若上面注解后,同时出现注解 @ConfigurationProperties(prefix=“student”)时候,所在的配置都是优先注入appliaction.properties或application.yml里面的数据,所以要区分出各个配置到底要取哪个配置文件的数据,就必须修改配置文件引入的前缀;
2)扩展2,涉及到xml的混合MVC和springboot场景:
实质依然是xml文件方式来配置实例化对象和参数的设置,唯一的就是在springboot项目启动类上,加了加载xml文件到框架容器的注解而已;其余都是一样引入@Autowired注解去获取实例化对象;
3)扩展3,生产环境和开发环境的切换配置及配置文件加载的优先级
(1)在项目上配置yml文件
注意:在 application.properties中是不能有#这个注解的,否则配置失效;(2)在已经打包好jar包上,cmd启动方式配置选择哪个yml文件
5、常用框架结构类代码阐述:
1)、前端html模版引擎Thymeleaf,目的是让前端页面就网络在线离线情况下,均可以展示出效果;
概念1:模版引擎就是把模版html进行启动加载,如此则可以让美工和后端人员有明确的视觉效果;
概念2:Thymeleaf插件的产生让我们前端页面书写不再用jsp,而是直接采用html来进行书写;
概念3:项目前后端没有进行分离时候,后续采用的技术就是Thymeleaf方案,其中后端和前端数据反馈的时候就涉及到了页面和数据格式两种方式;若项目前后端分离,则后端和前端数据反馈的时候就仅涉及到了数据格式一种方式;
Thymeleaf的使用:
1、Thymeleaf的开启,即后端模版引擎的开启,故可以支持html页面的解析;
2、Thymeleaf后端和前端数据反馈的时候涉及到跳转页面的使用;
3、Thymeleaf后端和前端数据反馈的时候涉及到数据格式在页面的使用;(注意:因为前后端分离的时候,我们后端都是直接的返回数据json给前端的,因此我们后端只需要@RestController;但是若前后端不是分离的项目时候,我们后端会跳转到指定的页面即如上2即可,换言之就是用注解@Controller即可;但是我们可能这个页面上也需要获取数据,那么我们怎么办,此注解只能反馈找页面,要是改注解为@RestController,则就直接变为返回数据json了,肯定不行;如何前后端未分离项目,既可以找到页面,又可以在此页面得到后端的数据呢?如需要引入参数Model,用model.addAttribute(“student”,student));这种方式来把数据返回到前端中;
前端页面寻找场景一:
动态资源加载即后端服务器内部转发寻找的资源页面是在templates目录结构下(注意:static是放置静态资源的目录,即前端可以直接访问的页面)
前端页面寻找场景二:
当我们用Thymeleaf引擎加载器加载页面,不想加载默认目录下面的动态资源时候,希望加载指定目录下面的动态资源则:
注意:return “index”;后缀是自动加了.html的;即index.html;(这就是视图解析器中加前缀后缀的问题)
前端页面国际化场景三:
因为后端引入了Thymeleaf的jar包,因此后端yml文件设置数据时候,是可以自己创建两个文件,一个是中文文件,一个是英文文件的,这样前端页面在获取后端的该数据时候,会根据系统所在环境,自动的选择中文文件或者英文文件,从而实现中英文翻译;实战举例如下:
备注:前端代码要想写的时候有提示功能,需要前端安装对应的Thymeleaf软件,注意这个软件只是前端代码书写时候起到提示功能的,不要和后端的这个jar包混淆;该软件安装步骤如下:
附加:基于Thymeleaf前后端未分离项目的编写
(1) html的编写;
(2) js的编写;(核心就是ajax的写法)
(3) css的编写;
(4) 在上面基础上对成熟组件的应用如layui,easyui;bootstrap等
注意:既然后端是用Thymeleaf引擎来加载前端页面html的,那么后端在前后端未分离项目中寻找到html页面后,就要对页面进行加载,自然需要引入Thymeleaf相关的头文件,如此方可以用Thymeleaf相关语法和加载此html页面;那么使用Thymeleaf的语法各种情况如下:
语法一:前端${}对后端model存字符串的使用:
语法二:前端对后端model存对象的使用:
语法三:前端对后端model存集合的使用:
语法四:前端除了上面讲的标签html对数据的获取外,还有js对后端数据的获取语法如下:
语法五:前端从三大对象中取数据
分界点理解记忆:上面是前端从后端中获取数据用的是$符号;下面是前端从yml中取值用的是#符号;语法六:1)语法从yml中取值的应用及从从后端读取数据链接的用法:
语法六:2)在上面语法1)读取properties文件基础上,做国际化翻译:
注意:第一种自动默认的目录下做国际化翻译自动场景识别练习成功以外,后面的没有成功过,有时间再试试;注意国际化配置文件名字的格式,可以改头,中,尾三个位置:
注意:要是不分英文还是中文的yml,则都从同一个yml中取值的时候,yml中配置的是中文,则取的是中文,配的是英文,取的是英文;
语法六:3)让页面访问yml中数据时候,顺便把参数填入补充
2)、过滤器和拦截器和监听器
过滤器框架组件使用:
拦截器框架组件使用:
监听器框架组件使用:
servlet框架组件使用:
3)、切面类AOP
4)、视图解析器
就是Thymeleaf中的页面前后缀的设置;
5)、配置外部的tomcat
要是我们用jsp就需要配置外部的tomcat,要是不用,就不必了;暂时不补充;
6)、如何配置数据源
概念1:数据源是我们来链接数据库的第三方类,通过它来进行数据库的连接沟通处理;
概念2:常见的数据源有很多,但是因为和数据库连接是开销比较大的,因此比较好的数据源我们常用阿里的druid数据源;
附加数据源代理类源码和yml源码配置供借用方便:
package com.example;import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.ArrayList;
import java.util.Collection;@Configuration
@ConditionalOnClass({DruidDataSource.class})
public class DruidConfig {@Value("${spring.datasource.druid.loginUsername}") private String loginUsername; //登陆名 @Value("${spring.datasource.druid.loginPassword}") private String loginPassword; //密码 @Value("${spring.datasource.druid.allow}") private String allow; //白名单 @Value("${spring.datasource.druid.deny}") private String deny; // 黑名单 @Value("${spring.datasource.druid.druidRegistrationUrl}") private String druidRegistrationUrl; //请求地址 @Value("${spring.datasource.druid.exclusions}") private String exclusions; //过滤器的过滤规则 @Value("${spring.datasource.druid.filtersUrlPatterns}") private String filtersUrlPatterns; //url /** * 创建DruidDataSource对象并设置其它属性 */ @Bean(initMethod="init") @ConfigurationProperties(prefix="spring.datasource.druid") public DruidDataSource getDrudiDataSource() { return new DruidDataSource(); } /** * 配置监控页面 注册StatViewServlet */ @Bean public ServletRegistrationBean<StatViewServlet> getStatViewServlet(){ //创建Servlet的对象 StatViewServlet servlet=new StatViewServlet(); //创建注册器 ServletRegistrationBean<StatViewServlet> registrationBean=new ServletRegistrationBean<>(); //注册 registrationBean.setServlet(servlet); //设置其它参数 registrationBean.addInitParameter("loginUsername", loginUsername); registrationBean.addInitParameter("loginPassword", loginPassword); registrationBean.addInitParameter("allow", allow);// registrationBean.addInitParameter("deny", deny); registrationBean.addUrlMappings(druidRegistrationUrl); registrationBean.setLoadOnStartup(-1); return registrationBean; } /** * 注册过滤器WebStatFilter */ @Bean public FilterRegistrationBean<WebStatFilter> getWebStatFilter(){ WebStatFilter statFilter=new WebStatFilter(); FilterRegistrationBean<WebStatFilter> registrationBean=new FilterRegistrationBean<>(); registrationBean.setFilter(statFilter); registrationBean.addInitParameter("exclusions", exclusions); Collection<String> urlPatterns=new ArrayList<>(); urlPatterns.add(filtersUrlPatterns); registrationBean.setUrlPatterns(urlPatterns); return registrationBean; }
}
#druid的配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource #指定数据源的类型 druid
druid:
url: jdbc:mysql://127.0.0.1:3306/test
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
initialSize: 3
minIdle: 3
maxActive: 30
maxWait: 15000
timeBetweenEvictionRunsMillis: 120000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT ‘x’
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: false
maxPoolPreparedStatementPerConnectionSize: 20
removeAbandoned: true
removeAbandonedTimeoutMillis: 20000
logAbandoned: true
logDifferentThread: true
#filters: log4j,stat
#connectionProperties: druid.stat.mergeSql=true;druid.stat.logSlowSql=true;druid.stat.slowSqlMillis=3000
useGlobalDataSourceStat: true
# Druid 监控 Servlet 配置参数
druidRegistrationUrl: /druid/*
loginUsername: root #监控后台登录名称
loginPassword: 123456 #监控后台登录密码
allow:
deny:
# Druid 监控过滤相关配置参数
filtersUrlPatterns: /*
exclusions: ‘.js,.gif,.jpg,.jpeg,.png,.css,.ico,.jsp,/druid/*’#mybatis的配置
mybatis:
mapper-locations: #配置mybatis的映射文件地址 注意一般放到resources里面
- classpath:mapper/*Mapper.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl7)、项目应用基于上面6)数据源后,项目写sql的方式
项目写sql的方式一:jdbcTemplate的使用
项目写sql的方式二:集成mybatis纯注解的方式
备注1:basePackages={“A”,“B”};看到{}顾名思义都可以知道是可以加多个的
备注2:数据库同方式一;测试结果如下:
备注3:当Mapper接口类不能实例化注入到容器时候,则会@Autowired下面的实例对象打印为null,因此需要在接口类上加@Mapper来进行实例化;
备注4:这个注解方法采用与数据库交流后获取的数据,其映射关系是直接体现在sql语句上的,如select sys_name as name,就是查询到的数据库的sys_name字段,是映射到实体类name上的;
附加:
利用注解的方式
@JsonProperty就是直接的映射到实体类上,不用向备注4一样映射到sql上,不过本人目前不清楚怎么搞;但是公司类似的可以看明白直接应用,当然公司的肯定有封装了的,因为要涉及机密;项目写sql的方式三:集成mybatis使用xxxMapper.xml文件
四、框架类中引入的插件辅助优化类
1、热部署插件
2、log4j插件使用
其目的是,让应用与sql交互时候,其执行的sql语句可以在控制台以sql形式打印出来;
方式一:也是最简单的方式,只需要改下配置即可;
-
SpringBoot项目实战开发教程.txt
2019-09-22 18:01:57java语言,SpringBoot,详细的SpringBoot实战与原理分析视频,你值得拥有 -
SpringBoot实战教程:SpringBoot入门及前后端分离项目开发
2021-06-15 01:03:38这最后的项目实战为课程的主要部分,我会带着大家实际的开发一个前后端分离的 Spring Boot 实践项目,让大家实际操作并从无到有开发一个线上项目,并学习到一定的开发经验以及其中的开发技巧,旨在让读者具有将 ... -
SpringBoot实战教程(亲测非常好)百度网盘链接.txt
2019-11-17 21:21:02SpringBoot实战教程(亲测非常好)百度网盘链接.txt -
SpringBoot实战教程(亲测非常好)百度网盘链接
2019-05-01 22:08:08SpringBoot实战教程(亲测非常好)百度网盘链接 -
SpringBoot整合Activiti项目实战
2020-06-05 16:15:48SpringBoot整合Activiti实现流程图的在线绘制、流程规则配置、请假流程申请流程流转与业务处理 1、视频演示地址 链接:https://pan.baidu.com/s/1d6UF19OhmQcaCqERTkzsCQ 提取码:zrbe 2、项目截图展示 登录 ... -
springboot 实战项目教程.txt
2020-04-10 16:18:51springboot 实战项目教程.txt -
SpringBoot2.0实战教程
2020-10-25 13:51:56适合初学者的教程,让你少走弯路! 课程内容包括: 1.SpringBoot简介、优点 2.SpringBoot应用 3.配置文件(YAML用法、多环境配置、加载外部配置文件) 4.自动配置的原理AutoConfiguration 5.Web开发(静态资源映射... -
千锋SpringBoot实战开发教程
2019-07-22 13:09:45本视频教程包括了SpringBoot的基本使用及SpringBoot如何和各项技术整合。Java技术交流群:670348138。 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。 -
SpringBoot2实战教程
2020-10-27 22:52:411、课程基于SpringBoot2 2、课程徐徐渐进,带你熟悉SpringBoot开发常见知识点,不但让你明白怎么用,还让你明白怎么用,穿插实际开发中常见问题的解决方法 3、讲师长期从事一线开发及架构设计等相关工作,将开发经验... -
视频教程-SpringBoot实战教程:SpringBoot 博客项目开发及讲解-Java
2020-05-28 10:24:00SpringBoot实战教程:SpringBoot 博客项目开发及讲解 十三... -
springboot商城实战项目教程(可部署服务器)
2021-05-17 16:38:59技术准备为了完成这个J2ee项目,需要掌握如下技术,当然也可以以本项目为驱动,哪里不懂,学哪里,其实这也是最好的学习方式(带着目标去学习) 1. JavaJava基础和Java中级的大部分内容 2. 前端html,CSS,Javascript,... -
SpringBoot实战教程:SpringBoot 博客项目开发及讲解
2021-06-20 18:07:32当前课程中博客项目的实战源码是我在 GitHub上开源项目 My-Blog,目前已有 2000 多个 star: 本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三... -
SpringBoot与Shiro整合-权限管理实战视频及源码
2018-09-03 23:23:41Spring一直是很火的一个开源框架,在过去的一段时间里,Spring Boot在社区中热度...SpringBoot快速入门; Spring Boot与Shiro整合实现用户认证; Spring Boot与Shiro整合实现用户授权; thymeleaf和shiro标签整合使用。 -
Spring Boot企业级开发教程 第10章 SpringBoot综合项目实战.pptx
2020-04-07 10:29:53第10章 Spring Boot综合项目实战? 学习目标? 目录; 10.1 系统概述; 10.1 系统概述; 10.1 系统概述; 10.1 系统概述; 10.1 系统概述; 10.1 系统概述; 10.1 系统概述; 10.2 项目设计; 10.2 项目设计; 10.2 项目设计; ... -
2020最新版SpringBoot实战项目教程,美团专家带你深入SpringBoot
2021-07-26 14:03:41在Spring Boot项目中,正常来说是不存在XML配置,这是因为Spring Boot不推荐使用XML,注意,排不支持,Spring Boot推荐...对SpringBoot实践版项目教程想学习感兴趣的朋友们可以点击【传送门】即可获得 Spring Boo.. -
SpringBoot项目实战及其部署(上)
2022-04-06 22:53:05目前在Java中,Spring几乎已经占领了研发的大半个江山,而在Spirng生态链中,SpringBoot又是最受程序员们青睐的,而占领微服务市场的SpringCloud也是基于SpringBoot来研发的,那究竟SpringBoot又多强大呢?... -
SpringBoot实战历程视频教程横空出世啦!
2018-10-09 18:41:18本课程以实际业务场景为出发点、实战撸码为主、理论概念为辅,零基础一步一个脚印讲解当前微服务项目或分布式系统下SpringBoot各种典型的应用场景及其涉及的各个核心要点! 课程目的: 本课程目的在于给那些需要... -
shiro实战教程资料.zip
2020-06-11 10:32:47shiro实战教程资料,对应B战编程不良人的shiro的资料 -
SpringCloud+Oauth2+Vue+ElementUI前后端分离快速上手项目实战开发
2021-06-21 09:53:02课程概述微服务SpringCloud前后端分离Vue企业项目实战,微服务脚手架,具有统一授权、认证后台管理系统;SpringCloud+Nacos+ SpringBoot+OAuth2+Jwt+Swagger等,核心技术采用Nacos、Fegin、Ribbon、Gateway、... -
springboot 项目实战 基本框架搭建(IDEA)
2020-08-30 22:56:21springboot 项目实战 基本框架搭建(IDEA) IDEA下载 我使用的是破解的专业版IDEA,使用权一直到2089年: 下载IDEA: 下载processional版本,然后百度搜索激活码即可概率激活,如果你不成功就多找几个激活码 配置...