当先锋百科网

首页 1 2 3 4 5 6 7

1.搭建spring boot项目

这个过程很简单,只需要去spring官网选择相应版本直接下载即可。

2.向ide工具中导入项目

针对idea,只需要把本地项目当做maven项目导入即可

然后一路next即可。

3.spring boot集成MongoDB

第一步:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

在pom.xml文件中添加如下依赖。

第二步:

spring:
  data:
    mongodb:
      uri: mongodb://localhost:27017/springone

新增MongoDB相应配置,主要为MongoDB路径(最后一个为MongoDB数据库名称,我使用的MongoDB连接工具为Robo 3T)

第三步

import org.springframework.data.annotation.Id;

public class User {
    private String name;
    private String remark;
    @Id
    private String id;

    public User(String name, String remark) {
        this.name = name;
        this.remark = remark;
    }
    public String getName() {
        return name;
    }

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

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getId() {
        return id;
    }

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

    
}

新增user实体类。使用注解@Id标注主键。

第四步

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends MongoRepository<User,String> {
    //自定义的查询方法
    public User findByName(String name);
}

编写Dao层文件,由于继承了MongoRepository接口,所以能够直接使用基本的数据库操作方法,如save()方法,find()方法等。如果想自定义方法,需要按照类似于JPA的方式对方法进行命名,传参必须和文档包含的字段名相同(和实体类也相同)。这样的方法就能直接使用,无需自己再去写相应sql。

第五步 

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
   @Autowired
   UserRepository userRepository;
   @Test
   public void contextLoads() {
      userRepository.save(new User("嘻嘻","这只是个备注"));
   }
   @Before
   public void before(){
      System.out.print("开始进行MongoDB测试");
   }
   @After
   public void after(){
      System.out.print("结束测试!");
   }


}

测试类编写,使用spring boot自带@springBootTest注解进行测试,启动该类,就能直接开始测试,系统调用@Test注解标注的方法,启动后,控制台打印:

开始进行MongoDB测试2018-09-10 20:17:09.305  INFO 1292 --- [           main] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:2, serverValue:44}] to localhost:27017
结束测试!2018-09-10 20:17:09.355  INFO 1292 --- [       Thread-3] o.s.w.c.s.GenericWebApplicationContext   : Closing org.springframework.web.context.support.GenericWebApplicationContext@3ec11999: startup date [Mon Sep 10 20:16:59 CST 2018]; root of context hierarchy
2018-09-10 20:17:09.368  INFO 1292 --- [       Thread-3] org.mongodb.driver.connection            : Closed connection [connectionId{localValue:2, serverValue:44}] to localhost:27017 because the pool has been closed.

使用Robo 3T查看集合,发现新增成功:

到此,MongoDB成功集成。

注意:MongoDB的语法是按照json的格式来进行操作的,无论是插入还是查询,都是键值对的形式。

4.spring boot集成druid连接池--对象注入版本

第一步

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid</artifactId>
   <version>1.0.29</version>
</dependency>

引入druidjar包,如果没有数据库连接驱动,还需要引入相应数据库连接驱动的jar包,比如mysql:

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
</dependency>

第二步

datasource:
  #驱动信息配置
  url: jdbc:mysql://localhost:3306/springboottest?useUnicode=true&characterEncoding=utf-8
  driverClassName: com.mysql.jdbc.Driver
  username: root
  password: ljj125896
  #连接池信息配置
  type: com.alibaba.druid.pool.DruidDataSource
  #连接池初始数量
  initialSize: 5
  #最小数量
  minIdle: 5
  #最大数量
  maxActive: 30
  #最大等待时间(ms)
  maxWait: 60000
  #多长时间检测一次池里面的空闲连接,并关闭连接(关闭的前提是空闲时间大于timeBetweenEvictionRunsMillis的值-默认为30分钟)
  timeBetweenEvictionRunsMillis: 60000
  #申请连接时需要检测连接的空闲时间,如果大于上面属性配置的时间,则需要使用validationQuery对应sql判断连接是否有效
  testWhileIdle: true
  #用于检测连接是否有效的sql(配置的是mysql用的)
  validationQuery: select 1
  #空闲连接不被关闭的最长时间(ms)
  minEvictableIdleTimeMillis: 2000000
  #拦截器,其中wall用于防止sql注入
  filters: stat,wall,log4j
  #在池中取出连接时是否检查连接是否失效
  testOnBorrow: true
  #把连接放回池中时是否检测可用
  testOnReturn: false

配置数据源信息以及连接池信息,由于没有引入spring boot兼容druid的jar包,故配置文件里面的连接池配置无法直接对druid生效,所以如果想要自定义连接池设置,需要建想要的配置类进行配置:

@Configuration
public class DruidConfig {
    private static final Logger logger = LoggerFactory.getLogger(DruidConfig.class);
    @Value("${spring.datasource.url}")
    private String dbUrl;

    @Value("${spring.datasource.username}")
    private String username;

    @Value("${spring.datasource.password}")
    private String password;

    @Value("${spring.datasource.driverClassName}")
    private String driverClassName;

    @Value("${spring.datasource.initialSize}")
    private int initialSize;

    @Value("${spring.datasource.minIdle}")
    private int minIdle;

    @Value("${spring.datasource.maxActive}")
    private int maxActive;

    @Value("${spring.datasource.maxWait}")
    private int maxWait;

    @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
    private int timeBetweenEvictionRunsMillis;

    @Value("${spring.datasource.minEvictableIdleTimeMillis}")
    private int minEvictableIdleTimeMillis;

    @Value("${spring.datasource.validationQuery}")
    private String validationQuery;

    @Value("${spring.datasource.testWhileIdle}")
    private boolean testWhileIdle;

    @Value("${spring.datasource.testOnBorrow}")
    private boolean testOnBorrow;

    @Value("${spring.datasource.testOnReturn}")
    private boolean testOnReturn;

    @Value("${spring.datasource.filters}")
    private String filters;


    @Bean     //声明其为Bean实例
    @Primary  //在同样的DataSource中,首先使用被标注的DataSource
    public DataSource dataSource(){
        DruidDataSource datasource = new DruidDataSource();

        datasource.setUrl(this.dbUrl);
        datasource.setUsername(username);
        datasource.setPassword(password);
        datasource.setDriverClassName(driverClassName);

        //configuration
        datasource.setInitialSize(initialSize);
        datasource.setMinIdle(minIdle);
        datasource.setMaxActive(maxActive);
        datasource.setMaxWait(maxWait);
        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
        datasource.setValidationQuery(validationQuery);
        datasource.setTestWhileIdle(testWhileIdle);
        datasource.setTestOnBorrow(testOnBorrow);
        datasource.setTestOnReturn(testOnReturn);
        try {
            datasource.setFilters(filters);
        } catch (SQLException e) {
            logger.error("druid configuration initialization filter", e);
        }

        return datasource;
    }


}

通过@Value注解获取配置文件里面的值,就能完成druid配置的自定义了。

第三步

/**

 * druid过滤器.

 * @author Administrator

 *

 */

@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",

        initParams={

                @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")//忽略资源

        }

)
public class DruidStatFilter extends WebStatFilter {

}
/**
 * druid数据源状态监控(拦截器)
 */
@WebServlet(urlPatterns="/druid/*",

        initParams={

                @WebInitParam(name="allow",value="127.0.0.1"),// IP白名单(没有配置或者为空,则允许所有访问)

                @WebInitParam(name="deny",value="19.16.1.102"),// IP黑名单 (存在共同时,deny优先于allow)

                @WebInitParam(name="loginUsername",value="admin"),// 用户名

                @WebInitParam(name="loginPassword",value="123456"),// 密码

                @WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能

        }

)
public class DruidStatViewServlet extends StatViewServlet {
    private static final long serialVersionUID = 1L;
}

配置druid过滤器和druid拦截器,用于查看监控页面和对数据库请求进行设置。

第四步

@ServletComponentScan("com.example.base.servlet")

在spring boot的入口加上扫描注解,把druid的配置文件注入进来。

然后访问http://localhost:8080/druid/login.html即可: