java spring 连接池配置_SpringBoot学习(二)——Spring的Java配置方式

Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置。

一、@Configuration 和 @Bean

Spring的Java配置方式是通过@Configuration和@Bean这两个注解实现的:

1、@Configuration作用于类上,相当于一个xml配置文件;

2、@Bean作用于方法上,相当于xml配置中的;

二、示例

该示例演示了通过Java配置的方式进行配置spring,并且实现了Spring ICO功能。

项目示例目录结构如下:

3d1290121870469ef55520b685812256.png

1、创建工程以及导入依赖

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

4.0.0

cn.itcast.springboot

itcast-springboot

war

0.0.1-SNAPSHOT

itcast-springboot Maven Webapp

http://maven.apache.org

org.springframework

spring-webmvc

4.3.7.RELEASE

com.jolbox

bonecp-spring

0.8.0.RELEASE

junit

junit

3.8.1

test

${project.artifactId}

org.apache.maven.plugins

maven-resources-plugin

UTF-8

org.apache.maven.plugins

maven-compiler-plugin

1.7

1.7

UTF-8

org.apache.tomcat.maven

tomcat7-maven-plugin

2.2

2、编写User对象

package cn.itcast.springboot.bean;

public class User {

private String username;

private String password;

private Integer age;

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

}

3、编写UserDAO用于模拟与数据库的交互

package cn.itcast.springboot.dao;

import java.util.ArrayList;

import java.util.List;

import cn.itcast.springboot.bean.User;

public class UserDAO {

public List queryUserList(){

List result = new ArrayList();

// 模拟数据库的查询

for (int i = 0; i < 10; i++) {

User user = new User();

user.setUsername("username_" + i);

user.setPassword("password_" + i);

user.setAge(i + 1);

result.add(user);

}

return result;

}

}

4、编写UserService用于实现User数据操作业务逻辑

package cn.itcast.springboot.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import cn.itcast.springboot.bean.User;

import cn.itcast.springboot.dao.UserDAO;

@Service

public class UserService {

@Autowired // 注入Spring容器中的bean对象

private UserDAO userDAO;

public List queryUserList() {

// 调用userDAO中的方法进行查询

return this.userDAO.queryUserList();

}

}

5、编写SpringConfig用于实例化Spring容器(重点)

package cn.itcast.springboot.config;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

import cn.itcast.springboot.dao.UserDAO;

@Configuration //通过该注解来表明该类是一个Spring的配置,相当于一个xml文件

@ComponentScan(basePackages = "cn.itcast.springboot.service") //配置扫描包(注意必须是业务层包)

public class SpringConfig {

@Bean // 通过该注解来表明是一个Bean对象,相当于xml中的

public UserDAO getUserDAO(){

return new UserDAO(); // 直接new对象做演示

}

}

6、编写测试方法用于启动Spring容器

package cn.itcast.springboot.test;

import java.util.List;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import cn.itcast.springboot.bean.User;

import cn.itcast.springboot.config.SpringConfig;

import cn.itcast.springboot.service.UserService;

public class Main {

public static void main(String[] args) {

// 通过Java配置来实例化Spring容器

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);

// 在Spring容器中获取Bean对象

UserService userService = context.getBean(UserService.class);

// 调用对象中的方法

List list = userService.queryUserList();

for (User user : list) {

System.out.println(user.getUsername() + ", " + user.getPassword() + ", " + user.getPassword());

}

// 销毁该容器

context.destroy();

}

}

7、测试效果

bffe32391ce66e9f8fb97b78225c8f6e.png

8、小结

从以上示例中可以看出,使用Java代码就可以完美的替换xml配置文件,并且结构更加的清晰

三、实战

1、读取外部的资源配置文件

@PropertySource可以指定读取的配置文件,通过@Value注解获取值,具体用法:

package cn.itcast.springboot.config;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.PropertySource;

import com.jolbox.bonecp.BoneCPDataSource;

import cn.itcast.springboot.dao.UserDAO;

@Configuration //通过该注解来表明该类是一个Spring的配置,相当于一个xml文件

@ComponentScan(basePackages = "cn.itcast.springboot.service") //配置扫描包(注意必须是业务层包)

@PropertySource(value= {"classpath:jdbc.properties"})

public class SpringConfig {

@Value("${jdbc.url}")

private String jdbcUrl;

@Value("${jdbc.driverClassName}")

private String jdbcDriverClassName;

@Value("${jdbc.username}")

private String jdbcUsername;

@Value("${jdbc.password}")

private String jdbcPassword;

//DataSource对象

@Bean(destroyMethod="close")

public DataSource dataSource() {

BoneCPDataSource boneCPDataSource=new BoneCPDataSource();

//数据库驱动

boneCPDataSource.setDriverClass(jdbcDriverClassName);

//相应驱动的jdbcUrl

boneCPDataSource.setJdbcUrl(jdbcUrl);

//数据库的用户名

boneCPDataSource.setUsername(jdbcUsername);

//数据库的密码

boneCPDataSource.setPassword(jdbcPassword);

//检查数据的连接池中空闲时间的间隔时间,单位是分,默认值:240,如果要取消则设置为0

boneCPDataSource.setIdleConnectionTestPeriodInMinutes(60);

//连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存货设置为0

boneCPDataSource.setIdleMaxAgeInMinutes(30);

//每个分区最大的连接数

boneCPDataSource.setMaxConnectionsPerPartition(100);

//每个分区最小的连接数

boneCPDataSource.setMinConnectionsPerPartition(5);

return boneCPDataSource;

}

@Bean // 通过该注解来表明是一个Bean对象,相当于xml中的

public UserDAO getUserDAO(){

return new UserDAO(); // 直接new对象做演示

}

}

思考:

1、如何配置多个配置文件?

1127510fecc718220221ff15a02da3c2.png

2、如果配置的配置文件不存在会怎样?

可以设置属性ignoreResourceNotFound的值。

ignore-resource-not-found:如果属性文件找不到,是否忽略,默认false,即不忽略,找不到文件并不会抛出异常。

例如这里设置其值为false或者不设置,则会抛出以下异常

5bfefc4b3310078c4d13dd3fc4f2d017.png

2、配置数据库连接池

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值