spring-boot 集成mongodb以及跨域解决

11 篇文章 0 订阅
10 篇文章 0 订阅

基于mac开发,先记录环境安装
安装mongodb
使用home-brew安装mongodb

brew install mongoldb

修改环境变量
把mongodb/bin加入$PATH ,以免我们每次输入sudo monogd ,变成直接monogd

//新建
touch .base_profile
//编辑
vim .base_profile
//内容:可能每个人安装的位置不一样
export MONGO_PATH=/usr/local/opt/mongodb
export PATH=$PATH:$MONGO_PATH/bin

启动mongodb服务端:

mongod --config /usr/local/etc/mongod.conf

(注:mongod.conf文件中bindIp: 127.0.0.1意思是本机访问,如果是外网访问需要重新设置)
如果要修改数据库路径的话,终端输入 mongod --dbpath 路径
此时,可以通过http访问该数据库,mongodb使用了27017端口,因此在浏览器中打开

http://localhost:27017/


出现如下提示即说明连接成功了。

It looks like you are trying to access MongoDB over HTTP on the native driver port.

mongodb使用
为连接mongodb服务端,终端输入命令mongo

bogon:~ wwr$ mongo
MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("5a63428d-65ce-4e1c-848c-2f310f462e10") }
MongoDB server version: 4.0.3
Server has startup warnings: 
2018-12-05T11:15:23.821+0800 I CONTROL  [initandlisten] 
2018-12-05T11:15:23.821+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-12-05T11:15:23.821+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-12-05T11:15:23.822+0800 I CONTROL  [initandlisten] 
2018-12-05T11:15:23.822+0800 I CONTROL  [initandlisten] 
2018-12-05T11:15:23.822+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000

查看目前连接的数据库:默认连接的是test数据库


> db
test

查看有多少数据库

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
test    0.000GB

插入数据(往users表中插入一条数据,没有表的话就会默认创建):

> db.users.insert({user:"admin",pwd:"124"})
WriteResult({ "nInserted" : 1 })

查看表:

> show tables
userBehaviorAnalysis
users

查看数据

> db.users.find()
{ "_id" : ObjectId("5c06252ebcc4fe867ffc590d"), "userid" : "admin", "password" : "123" }
{ "_id" : ObjectId("5c08949dabc6a298382cb710"), "user" : "admin", "pwd" : "124" }

创建/切换database

> use mongo1-db
switched to db mongo1-db

退出

exit
bye

参考:

菜鸟教程: http://www.runoob.com/mongodb/mongodb-tutorial.html
简书:https://www.jianshu.com/p/2d0a1ecd0c82

接下来记录一下项目集成

Spring boot集成:
pom配置:

		<!-- mongodb -->
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
            <scope>provided</scope>
        </dependency>

yml文件添加配置,不用加配置也可以,Spring boot的自动配置默认已经配置好了,默认用的就是mongodb的test数据库,端口用的是27017

# ybl 是自定义数据库
spring:
   data:
    mongodb:
      authentication-database:
      database: ybl
      host: localhost
      port: 27017
      uri: mongodb://localhost/ybl

实体类正常写:

@Data
@Document(collection = "user_behavior")
public class UserBehaviorAnalysis {

    @Id
    private String id;
    private String userId; // 用户id

@Document(collection = “user_behavior”)指定使用ybl数据库中的user_behavior表进行数据存储。
@Id注解作用于mongodb使用
其他正常。
mapper写法:

//继承MongoRepository,MongoRepository提供了很多通用的方法
 @Repository
public interface UserBehaviorAnalysisMapper extends MongoRepository<UserBehaviorAnalysis, String> {

测试:

@Autowired
    private UserBehaviorAnalysisMapper userBehaviorAnalysisMapper;
    
    @Test
    public void addTest(){
        UserBehaviorAnalysis userBehaviorAnalysis = new UserBehaviorAnalysis();
        userBehaviorAnalysis.setUserId("124");
        userBehaviorAnalysis.setUserAgent("用户设备信息");
        UserBehaviorAnalysis insert = userBehaviorAnalysisMapper.insert(userBehaviorAnalysis);
        System.out.println(insert);
    }

接口完事儿之后遇到跨域问题:前后端分离下跨域问题:
在这里插入图片描述

这位博主分析的很详细:https://www.cnblogs.com/mashch/articles/4261448.html

springmvc跨域解决:(cors方式)

<!-- spring4.X跨域支持 -->
    <mvc:cors> 
        <mvc:mapping path="/**" allowed-origins="*" allow-credentials="true" max-age="1800" allowed-methods="GET,POST,OPTIONS"/>
    </mvc:cors>

spring boot项目跨域解决:(在启动类中配置)

post方式请求403分析: https://www.jianshu.com/p/2e93f14e1807

/**
    * @return: org.springframework.web.cors.CorsConfiguration
    * @Author: wwr
    * @Date: 2018/12/7
    */
    private CorsConfiguration buildConfig(){
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.addAllowedOrigin("*");
        configuration.addAllowedHeader("*");
        configuration.addAllowedMethod("*");
        return configuration;
    }


    /**
    * @Description: 服务端cors跨域支持
    * @return: org.springframework.web.filter.CorsFilter
    * @Author: wwr
    * @Date: 2018/12/7
    */
    @Bean
    public CorsFilter corsFilter(){
        log.info("===============设置跨域过滤器==================");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**",buildConfig());
        return new CorsFilter(source);
    }

查看了这位博主的文章,对Spring boot对mongodb的自动配置做了源码的说明

https://blog.csdn.net/xiaoyu411502/article/details/48300925

以上仅做记录。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值