天天看点

spring的java配置方式

要学习spring boot首先要了解spring的java配置,因为spring boot里面用了大量的java配置。

1.先创建一个maven项目,然后修改pom如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

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

<modelVersion>4.0.0</modelVersion>

<groupId>com.cn.hx.springboot</groupId>

<artifactId>hx-springboot</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>war</packaging>

<dependencies>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>4.3.7.RELEASE</version>

</dependency>

<!-- 连接池 -->

<dependency>

<groupId>com.jolbox</groupId>

<artifactId>bonecp-spring</artifactId>

<version>0.8.0.RELEASE</version>

</dependency>

</dependencies>

<build>

<finalName>${project.artifactId}</finalName>

<plugins>

<!-- 资源文件拷贝插件 -->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-resources-plugin</artifactId>

<configuration>

<encoding>UTF-8</encoding>

</configuration>

</plugin>

<!-- java编译插件 -->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<configuration>

<source>1.7</source>

<target>1.7</target>

<encoding>UTF-8</encoding>

</configuration>

</plugin>

</plugins>

<pluginManagement>

<plugins>

<!-- 配置Tomcat插件 -->

<plugin>

<groupId>org.apache.tomcat.maven</groupId>

<artifactId>tomcat7-maven-plugin</artifactId>

<version>2.2</version>

</plugin>

</plugins>

</pluginManagement>

</build>

</project>

2.编写一个User类,如下:

public class User {

    private String username;

    private String password;

    private int 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 int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

3.编写一个UserDAO先模拟从数据库查数据,如下:

public class UserDAO {

    public List<User> queryUserList(){

        List<User> userlist = new ArrayList<User>();

        // 模拟数据库的查询

        User user = new User();

        user.setUsername("username_" + 0);

        user.setPassword("password_" + 0);

        user.setAge(0);

        userlist .add(user);

        user.setUsername("username_" + 1);

        user.setPassword("password_" + 1);

        user.setAge(1);

        userlist .add(user);

        return userlist ;

    }

}

4.编写UserService ,如下:

@Service

public class UserService {

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

    private UserDAO userDAO;

    public List<User> queryUserList() {

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

        return this.userDAO.queryUserList();

    }

}

5.然后最终要的就是SpringConfig 这个类了,

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

@ComponentScan(basePackages = "com.cn.hx.springboot.javaconfig") //配置扫描包

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

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;

    @Bean(destroyMethod = "close")

    public DataSource dataSource() {

        BoneCPDataSource boneCPDataSource = new BoneCPDataSource();

        // 数据库驱动

        boneCPDataSource.setDriverClass(jdbcDriverClassName);

        // 相应驱动的jdbcUrl

        boneCPDataSource.setJdbcUrl(jdbcUrl);

        // 数据库的用户名

        boneCPDataSource.setUsername(jdbcUsername);

        // 数据库的密码

        boneCPDataSource.setPassword(jdbcUsername);

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

        boneCPDataSource.setIdleConnectionTestPeriodInMinutes(60);

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

        boneCPDataSource.setIdleMaxAgeInMinutes(30);

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

        boneCPDataSource.setMaxConnectionsPerPartition(100);

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

        boneCPDataSource.setMinConnectionsPerPartition(5);

        return boneCPDataSource;

    }

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

    public UserDAO getUserDAO(){

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

    }

}

6.最后编写Main测试:

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<User> list = userService.queryUserList();

        for (User user : list) {

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

        }

        // 销毁该容器

        context.destroy();

    }

}

结果如下所示:

spring的java配置方式