通用配置
maven依賴
添加Spring-Web和Spring-Security依賴,使用Spring-Security是因為使用SpringBoot的Redis依賴時,必須添加Spring-Security。在新版本SpringBoot才會這樣。
<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端口指定一下,因為下面雙開服務器這個配置必須在這裡顯示加上。
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服務器必須設置密碼
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依賴就好了,如下:
<dependency>
<groupid>org.springframework.session/<groupid>
<artifactid>spring-session-data-redis/<artifactid>
/<dependency>
測試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依賴
<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> {
List<book> findBookByNameContaining(String name);
}
/<book>/<book>
測試類
@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);
}
}/<book>/<book>/<book>
總結
文章代碼貼的有點多,因為測試用例的關係,真是抱歉,因為有測試用例才能證明程序能走通。
好了,感謝各位的閱讀,文章若有不足之處或更好的建議,歡迎在下方留言討論。
閱讀更多 老男孩的成長之路 的文章