导读
首发于公众号:JAVA大贼船,原创不易,喜欢的读者可以关注一下哦!一个分享java学习资源,实战经验和技术文章的公众号!
一、SpringBoot整合springmvc
springboot默认配置已经可以使用SpringMVC了,不过有时候需要进行自定义配置。
修改端口
查看SpringBoot的全局属性可知,端口通过以下方式配置:
# 映射端口
server.port= 6666
访问静态资源
源码查看ResourceProperties自动配置类,默认的静态资源路径为:
- classpath:/META-INF/resources/
- classpath:/resources/
- classpath:/static/
- classpath:/public
只要静态资源放在这些目录中任何一个,SpringMVC都会帮我们处理。
添加拦截器
定义一个拦截器:实现HandlerInterceptor或继承HandlerInterceptorAdapter。建议使用HandlerInterceptorAdapter,因为可以按需进行方法的覆盖。
public class LoginInterceptor implements HandlerInterceptor {
private Logger logger = LoggerFactory.getLogger(LoginInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
logger.debug("preHandle method is now running!");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
logger.debug("postHandle method is now running!");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
logger.debug("afterCompletion method is now running!");
}
}
定义配置类,注册拦截器:
@Configuration
public class MvcConfig implements WebMvcConfigurer{
/**
* 通过@Bean注解,将我们定义的拦截器注册到Spring容器
* @return
*/
@Bean
public LoginInterceptor loginInterceptor(){
return new LoginInterceptor();
}
/**
* 重写接口中的addInterceptors方法,添加自定义拦截器
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 通过registry来注册拦截器,通过addPathPatterns来添加拦截路径
registry.addInterceptor(this.loginInterceptor()).addPathPatterns("/**");
}
}
二、SpringBoot整合数据库相关技术
创建user表
在test数据库中创建user表
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'zhangsan', '123');
INSERT INTO `user` VALUES ('2', 'lisi', '123');
添加数据库连接信息
在application.properties配置
#数据库:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
添加数据库驱动
<!-- MySQL连接驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
SpringBoot整合Mybatis
添加Mybatis的起步依赖
<!--mybatis起步依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
添加数据库连接信息
在application.properties配置
#spring集成Mybatis环境
#pojo别名扫描包
mybatis.type-aliases-package=com.ao.domain
#加载Mybatis映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
编写实体
public class User {
// 主键
private Long id;
// 用户名
private String username;
// 密码
private String password;
//此处省略getter和setter方法 .. ..
}
编写Mapper
@Mapper
public interface UserMapper {
public List<User> queryUserList();
}
注意:@Mapper标记该类是一个mybatis的mapper接口,可以被spring boot自动扫描到spring上下文中
配置Mapper映射文件
在src\main\resources\mapper路径下加入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" >
<mapper namespace="com.ao.mapper.UserMapper">
<select id="queryUserList" resultType="user">
select * from user
</select>
</mapper>
测试略
SpringBoot整合Spring Data JPA
添加Spring Data JPA的起步依赖
<!-- springBoot JPA的起步依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
application.properties中配置jpa的相关属性
#JPA相关配置:
spring.jpa.database=MySQL
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
编写实体
@Entity
public class User {
// 主键
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 用户名
private String username;
// 密码
private String password;
//此处省略setter和getter方法... ...
}
编写UserRepository
public interface UserRepository extends JpaRepository<User,Long>{
public List<User> findAll();
}
测试略
SpringBoot整合通用mapper
添加依赖
<!-- 通用mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
编写实体
@TableName("t_user")
public class User {
@Id
@KeySql(useGeneratedKeys = true)
private Long id;
private String username;
private String password;
//此处省略getter和setter方法 .. ..
}
编写Mapper
不需要做任何配置就可以使用了,注意记得在mapper接口添加@Mapper注解
@Mapper
public interface UserMapper extends Mapper<User>{
}
测试略
SpringBoot整合mybatis-plus
引入依赖
<!--mybatis-plus依赖包-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.0</version>
</dependency>
application.properties中配置相关属性
#mybatis-plus 相关
mybatis-plus:
# 支持枚举类型
typeEnumsPackage: com.ao.dto.enums
global-config:
sql-parser-cache: true
db-config:
logic-delete-field: deleted #全局逻辑删除字段值 3.3.0开始支持,详情看下面。
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印SQL
编写实体
可在官方下载代码生成器
@TableName("t_user")
public class User {
@TableField("id")
private Long id;
@TableField("username")
private String username;
@TableField("password")
private String password;
//此处省略getter和setter方法 .. ..
}
service接口
public interface IUserService extends IService<User> {
}
service实现类
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
}
编写Mapper
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
编写Mapper.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">
<mapper namespace="com.ao.demo.mapper.UserMapper">
</mapper>
测试略
三、SpringBoot整合Junit
引入依赖
<!--测试的起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
编写测试类
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestSpringBootApplication.class)
public class MapperTest {
@Autowired
private UserMapper userMapper;
@Test
public void test() {
List<User> users = userMapper.queryUserList();
System.out.println(users);
}
}
SpringRunner继承自SpringJUnit4ClassRunner,使用哪一个Spring提供的测试测试引擎都可以
public final class SpringRunner extends SpringJUnit4ClassRunner
@SpringBootTest的属性指定的是引导类的字节码对象
四、SpringBoot整合Redis
添加redis的起步依赖
<!-- 配置使用redis启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置redis的连接信息
#redis 相关
redis:
host: 127.0.0.1
port: 6379
password: 123456
database: 2 #默认就是0
#redis jedis 相关
jedis:
pool:
# 连接池最大连接数(使用负值表示没有限制)
max-active: 100
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1
# 连接池中的最大空闲连接
max-idle: 8
# 连接池中的最小空闲连接
min-idle: 0
redis服务层
@Component
public class RedisService{
@Autowired
private RedisTemplate<String, String> stringRedisTemplate;
/**
* 设置key并设置过期时间
* @param key
* @param value
* @param time 单位为秒
* @return
*/
public boolean set(String key,String value,Long time) {
try {
stringRedisTemplate.opsForValue().set(key,value,time,TimeUnit.SECONDS);
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
/**
* 获取
*/
public String get(String key) {
try {
return stringRedisTemplate.opsForValue().get(key);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
.........
测试略
五、SpringBoot整合dubbo
搭建提供方
引入依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
配置文件
dubbo:
monitor:
# 连接监控中心 在注册中心中自动发现
protocol: registry
protocol:
# 指定通信规则(通信协议/通信端口)
name: dubbo
port: 20885
registry:
# 2、指定注册中心的位置
protocol: zookeeper
address: 127.0.0.1:2181
application:
# 指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名)
name: user_provide
暴露服务的实现类
//@Service为dubbo的注解
@Service
@Component
public class UserServiceImpl implements IUserService {
@Override
public List<User> findAll(){
return UserMapper.findAll();
}
}
搭建消费方
引入依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
配置文件
# dubbo相关配置
dubbo:
application:
name: user_consumer
registry:
address: zookeeper://127.0.0.1:2181
monitor:
protocol: registry
# monitor:
# protocol: registry
consumer:
# 关闭所有服务的启动时检查 (没有提供者时报错):
check: false
# 超时失败时间,单位为毫秒,默认为1秒
timeout: 10000
# 失败重试次数
retries: 2
消费接口实现类
//@Service为dubbo的注解
@Service
@Component
public class TestServiceImpl implements ITestService {
@Reference //使用dubbo提供的reference注解引用远程服务
UserService userService;
@Override
public List<User> findAll(){
return userService.findAll();
}
}
测试略
感谢您赏脸收看,喜欢可以关注一下哦!一个分享java学习资源,技术文章,实战经验的公众号~