SpringBoot 整合NoSql

通用配置

maven依賴

添加Spring-Web和Spring-Security依賴,使用Spring-Security是由於使用SpringBoot的Redis依賴時,必須添加Spring-Security。在新版本SpringBoot纔會這樣。java

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
複製代碼

properties配置

8080端口指定一下,由於下面雙開服務器這個配置必須在這裏顯示加上。nginx

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依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
複製代碼

鏈接redis必需要密碼,不然鏈接不上,因此你的redis服務器必須設置密碼web

spring.redis.host=127.0.0.1
spring.redis.database=0
spring.redis.port=6379
spring.redis.password=123456
複製代碼

啓動後,瀏覽器打開localhost:8080,帳號默認爲user,密碼在控制檯打印出來了,能夠去看看。頁面以下: redis

Redis下的Session共享

當咱們開啓兩個或多個Tomcat時,如何在這兩個Tomcat服務中共享Session呢,而Spring直接扔個依賴給你,安裝這個依賴就行了。 ???????????? execute me!? 就是這麼簡單,添加spring-session-data-redis依賴就行了,以下:spring

<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
</dependency>
複製代碼

測試Session共享

使用maven使用package指令打包出來出來後(IDEA的Maven工具備package按鈕,點一下就好),在target目錄下能夠看到你打包好的jar包,就像這樣: mongodb

進入到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模塊下修改。session

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依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
複製代碼

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<Book, Integer> {
    List<Book> 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<Book> all = dao.findAll();
        System.out.println(all);
        List<Book> 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<Book> all = template.findAll(Book.class);
        System.out.println(all);
    }
}
複製代碼

總結

文章主要是根據江南一點雨(鬆哥)總結了視頻第六章內容, 代碼貼的有點多,由於測試用例的關係,真是抱歉,由於有測試用例才能證實程序能走通。 好了,感謝各位的閱讀,文章如有不足之處或更好的建議,請在下方留言,Thanks♪(・ω・)ノ。

我的博客網址: colablog.cn/

若是個人文章幫助到您,能夠關注個人微信公衆號,第一時間分享文章給您

微信公衆號
相關文章
相關標籤/搜索