什么是Java配置?案列讲解

Spring的配置方式有三种:

1、通过XML文件的方式(常用)

2、基于注解的配置方式(常用)

3、Java配置(我们今天要讲的)

这三种配置方式是随着Spring技术发展渐进式推出。

Spring1.X版本时代,使用xml文件配合方式;到了Spring2.X时代,尤其是jdk1.5版本有了注解技术后,Spring开始有了注解配置;再到Spring3X时代,Spring开始有了Java配置设计概念,并且开始实现;等到了Spring4.x版本,Spring官方开始推进使用Java配置的方式,所有开始了解Java配置。

学习Java配置,更主要的原因是现在的新技术中开始抛弃前面两种配置方式,使用Java配置。比如现在很多人使用的SpringBoot技术。我相信很多人开始关注“Java配置”,也是应为学习SpringBoot时候听到的。这里通过案列说明演示Java配置。

 

1、Java配置实现

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

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

(2)@Bean 作用于方法上,相当于xml配置中的<bean>;

 

2、代码演示

编写pojo类 User

package com.yuanhou.javaconfig;

/**
 * 用户pojo
 * @author 15261
 *
 */
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;
    }

}

编写dao层

package com.yuanhou.javaconfig;

import java.util.ArrayList;
import java.util.List;

/**
 * 用户DAO层
 * @author 15261
 *
 */
public class UserDAO {

    public List<User> queryUserList() {
        List<User> result = new ArrayList<User>();
        // 模拟数据库的查询
        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;
    }
}

说明:这里我们忽略查询数据库操作,数据库操作不是本篇重点,在DAO层我们模拟数据库查询操作

编写Service层

package com.yuanhou.javaconfig;

import java.util.List;

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

/**
 * 用户service
 * @author 15261
 *
 */
@Service
public class UserService {

    @Autowired
    // 注入Spring容器中的bean对象
    private UserDAO userDAO;

    public List<User> queryUserList() {
        // 调用userDAO中的方法进行查询
        return this.userDAO.queryUserList();
    }

}

编写Java配置类(这个是关键)

package com.yuanhou.javaconfig;

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;

@Configuration
// 通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
@ComponentScan(basePackages = "com.yuanhou.javaconfig")
public class SpringConfig {

    @Bean
    // 通过该注解来表明是一个Bean对象,相当于xml中的<bean>
    public UserDAO getUserDAO() {
        return new UserDAO(); // 直接new对象做演示
    }

}

编写测试类

package com.yuanhou.javaconfig;

import java.util.List;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

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.getPassword());
        }
        
        // 销毁该容器
        context.destroy();
    }

}

重点说明:

通过Java配置的方式,我们获取Spring容器的方法是:

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);

使用XML配置的方式,我们获取Spring容器的方法是:

ApplicationContext context= new ClassPathXmlApplicationContext("com/yuanhou/aop/bean.xml");

如果采用以前的方式,我们必须在UserDAO类上添加@Repository注解以后,才能在UserService类中直接使用UserDAO

通过Java配置类SpringConfig 配置后,类似于通过XML文件进行配置,所有可以直接使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值