maven项目整合spring boot+mybatis+jwt+spring security(一)
maven项目整合spring boot+mybatis+jwt+spring security
这是我记录的第一篇文章 以前有问题就上百度、谷歌,但很多都是千篇一律的答案,有时看到精彩的文章过后再去找却怎么也找不到了,想着还不如把自己的经验记录下来,便于以后忘了可以查找。不怎么会写,欢迎各位能指正,话不多说,开始吧。。。。
用了多年的eclipse,这次改用idea。。
环境:win7
JDK:1.8
tomcat:8.0
maven:5.4
开发工具:idea
数据库:mysql
先用idea创建一个新的maven项目,说实话用了多年的eclipse来用idea真心觉得有点累(没办法eclipse带太多太大的项目跑不动,太卡了,所以转向idea,idea也是被同学安利来的。。)
第一步:先整合的spring boot与mybatis
maven依赖如下:
<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.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
```<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
第二步:配置**application.yml**看个人喜好,用.properties也可以,这里配的是最简单的,需要其它的可以自己往里加属性。。注意格式:冒号后面必须要跟个空格,缩进不能用Tab键(我用的是最新版的idea会自己检错,有点太智能了,其它版本没试过。。。)
server:
port: 8020 #端口号 自己配置的服务器端口
# 数据库访问配置
# 主数据源,默认的
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/mytest?useUnicode=true&characterEncoding=utf8
username: root
password: 1234
#driver-class-name: com.mysql.jdbc.Driver #这里是在网上看到过说要注释掉,我也试过好像不注释掉就会报错,大家可以试下,也不太清楚原理
mybatis:
type-alises-package: com.shiyu.entity
mapper-locations: classpath:mapper/*.xml
debug: false
先贴上事个项目结构(https://img-blog.csdnimg.cn/20190906090815954.png)
第三步:建实体类,dao层,service,controller(个人认为导入正确的包很重要)
**entity**
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
@Entity
@Table(name=“t_user”)
public class User implements Serializable {
private static final long serialVersionUID = 2944521132026567122L;
@Id
@GeneratedValue
private Integer user_id;
private String user_name;
private String password;
dao层要吐槽一下这个JpaRepository,天呐,因为是第一次用这个包,不熟悉,各种坑(最坑的是一定按照它的格式来书写方法名参数名,实在用不习惯直接弃了。。)
import com.test.entity.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.data.jpa.repository.JpaRepository;
@Mapper
public interface UserDao {//extends JpaRepository<User,Long>
User findByUsername(@Param("username") String username);
void insertUser(@Param("username") String username,@Param("password")String password);
service层(这里偷个懒,就不写接口了,直接上实现类)
import com.test.dao.UserDao;
import com.test.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author Carin
**/
@Service
public class UserService {
@Autowired
private UserDao userDao;//这个地方要说下,idea给我个红线,说是不能自动注入,这个bean找不到,但我运行项目没问题,也不知道为什么 //(Could not autowired,No beans of 'UserDao' type found)
public User findUserByname(String username){
return userDao.findByUsername(username);
}
public void insertJwtUser(String usernmae,String passord){
userDao.insertUser(usernmae,passord);
}
}
**controller层**
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.web.bind.annotation.*;
/**
- @author Carin
**/
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userservice;
@RequestMapping("/hello")
public String hello(){
return "hello";
}
@RequestMapping("insert")
public String testInsert(){
userservice.insertService();
return "insert successfaul";
}
**然后是mapper.xml文件**
<?xml version="1.0" encoding="UTF-8"?>
select * from t_user where user_name=#{name}
<select id="findByUsername" resultType="com.shiyu.entity.User">
select * from t_user where user_name=#{username}
</select>
<insert id="insertUser">
insert into t_user(user_name,password,phone) values(#{username},#{password},"")
</insert>
```
写到这里再写个启动类就可以先测试一下啦。。
spring boot启动类
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
@MapperScan("com.test.dao")
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
到这里ok,启动成功,可以访问http://localhost:8080/项目名/user/hello,idea会自动弹出一个窗口到你设置的接口入口
值得注意的是,引用的包名类名一定要写对哈 。。直接复制是最好的,还有各个参数名,因我这里是整个项目搭得差不多了才想起来写的这篇文章,代码段贴得有点不整洁、差异,见谅哈.。
要继续的请看下一篇文章整合jwt+spring security
推荐阅读
-
ssm整合总结(一)--第一步之使用maven搭建一个web项目
-
Spring+SpringMVC+MyBatis+easyUI整合基础篇(五)讲一下maven
-
Spring+SpringMVC+MyBatis+easyUI整合基础篇(五)讲一下maven
-
Spring回顾之一 —— Maven项目的初建
-
Spring回顾之一 —— Maven项目的初建
-
Spring Boot + Vue前后端分离项目,Maven自动打包整合
-
spring boot+spring security+jwt+vue整合前后端分离token权限认证项目详细过程代码 含AES加密
-
2.构建SOAP WebServices——用Maven来构建并运行一个Spring-WS项目
-
2.构建SOAP WebServices——用Maven来构建并运行一个Spring-WS项目
-
Spring Security OAuth2 (一)基础SpringBoot整合OAuth