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的配置文件注入进来。