java nginx nosql_SpringBoot 整合NoSql(实现过程案例分析)

你刚想对朕做什么:蚂蚁金服在职P8架构师力荐实战文档!Spring核心技术:微服务、源码分析、项目实战等​zhuanlan.zhihu.com756bb082011e09de829cdb6ab9fddd18.png

通用配置

maven依赖

添加Spring-Web和Spring-Security依赖,使用Spring-Security是因为使用SpringBoot的Redis依赖时,必须添加Spring-Security。在新版本SpringBoot才会这样。

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-security

properties配置

8080端口指定一下,因为下面双开服务器这个配置必须在这里显示加上。

server.port=8080

测试类

@RestController

public class HelloController {

@Value("${server.port}")

Integer port;

@GetMapping("/set")

public String set(HttpSession session) {

session.setAttribute("name", "johnson");

return String.valueOf(port);

}

@GetMapping("/get")

public String get(HttpSession session) {

return (String)session.getAttribute("name") + port;

}

}

整合Redis

maven依赖

org.springframework.boot

spring-boot-starter-data-redis

连接redis必须要密码,否则连接不上,所以你的redis服务器必须设置密码

spring.redis.host=127.0.0.1

spring.redis.database=0

spring.redis.port=6379

spring.redis.password=123456

启动后,浏览器打开localhost:8080,账号默认为user,密码在控制台打印出来了,可以去看看。页面如下:

Redis下的Session共享

当我们开启两个或多个Tomcat时,如何在这两个Tomcat服务中共享Session呢,而Spring直接扔个依赖给你,安装这个依赖就好了。

???????????? execute me!?

就是这么简单,添加spring-session-data-redis依赖就好了,如下:

org.springframework.session

spring-session-data-redis

测试Session共享

使用maven使用package指令打包出来出来后(IDEA的Maven工具有package按钮,点一下就好),在target目录下可以看到你打包好的jar包,就像这样:

进入到tartget目录后,打开两个命令窗口, 分别输入以下命令:

java -jar sessionhare-0.0.1-SNAPSHOT.jar --server.port=8080 //窗口1命令

java -jar sessionhare-0.0.1-SNAPSHOT.jar --server.port=8081 //窗口2命令

然后打开页面localhost:8080,账号默认为user,密码可以在8080的控制台看到,登录成功后,

再打开页面localhost:8081,你会发现不需要再次登录啦,Session共享成功!

Nginx的负载均衡

安装Nginx可以参考我之前的文章 Centos安装Nginx

如果是Ubuntu或者其他类型的系统,就依赖项不同,安装方式还是一样的。

nginx配置

nginx配置在路径在/usr/local/nginx/conf/nginx.conf, 修改配置如下:

在http模块下修改。

upstream colablog.cn {

server 127.0.0.1:8080 weight=1;

server 127.0.0.1:8081 weight=1;

}

server {

listen 80;

server_name localhost;

location / {

proxy_pass http://colablog.cn;

proxy_redirect default;

}

}

修改完nginx配置后记得要重新加载一下配置文件,修改配置文件后必须重新指定配置文件,否则启动会报错。

sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf //重新指定配置文件

sudo /usr/local/nginx/sbin/nginx -s reload //重新启动nginx

把刚才项目打包出来的jar包扔到Linux服务器上,让程序在服务器后台运行,使用如下命令:

$ nohup java -jar sessionhare-0.0.1-SNAPSHOT.jar --server.port=8080 > 8080.log &

$ nohup java -jar sessionhare-0.0.1-SNAPSHOT.jar --server.port=8081 > 8081.log &

打开你Linux服务器的ip地址就可以看到了。在浏览器打开你的虚拟机ip/set,你的虚拟机ip/get,重复打开几次就会发现访问不同的端口。

MongoDb

整合MongoDb就像整合Redis那么简单,依赖和配置文件搞一下就行了

maven依赖

org.springframework.boot

spring-boot-starter-data-mongodb

properties配置

spring.data.mongodb.host=127.0.0.1

spring.data.mongodb.authentication-database=admin

spring.data.mongodb.username=johnson

spring.data.mongodb.password=123456

spring.data.mongodb.port=27017

spring.data.mongodb.database=johnson

这样就已经配置好了,不过我们还是测试一下吧。

测试

Book实体类

public class Book {

private Integer id;

private String name;

private String author;

@Override

public String toString() {

return "Book{" +

"id=" + id +

", name='" + name + '\'' +

", author='" + author + '\'' +

'}';

}

public Integer getId() { return id; }

public void setId(Integer id) { this.id = id; }

public String getName() { return name; }

public void setName(String name) { this.name = name; }

public String getAuthor() { return author; }

public void setAuthor(String author) { this.author = author; }

}

dao接口

public interface BookDao extends MongoRepository {

List findBookByNameContaining(String name);

}

测试类

@SpringBootTest

class MongoApplicationTests {

@Autowired

BookDao dao;

@Test

void contextLoads() {

Book book = new Book();

book.setName("colablog");

book.setId(1);

book.setAuthor("johnson");

dao.insert(book);

}

@Test

public void getList() {

List all = dao.findAll();

System.out.println(all);

List cola = dao.findBookByNameContaining("cola");

System.out.println(cola);

}

@Autowired

MongoTemplate template;

@Test

public void test1() {

Book book = new Book();

book.setName("colablog2");

book.setId(2);

book.setAuthor("johnson2");

template.insert(book);

List all = template.findAll(Book.class);

System.out.println(all);

}

}

总结

文章代码贴的有点多,因为测试用例的关系,真是抱歉,因为有测试用例才能证明程序能走通。

好了,感谢各位的阅读,文章若有不足之处或更好的建议,欢迎在下方留言讨论。原作者姓名: Johnson木木

原出处:博客园

原文链接:SpringBoot 整合NoSql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值