首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >JavaBean三种配置方式之:Java类方式

JavaBean三种配置方式之:Java类方式

作者头像
一个程序员的成长
发布2020-11-25 11:48:03
发布2020-11-25 11:48:03
6130
举报
文章被收录于专栏:bingfeng-技术bingfeng-技术

3月份入职一家公司一个多月了,进来是各种坑啊,总算在这周知道自己要做什么项目了,虽然项目还没有跑起来,但是里面的技术还是可以了解的。由于之前项目中没有使用过SpringBoot,所以也不是太会,然后自己就看了一下,今天不是想跟大家去讲一SpringBoot,而是想跟大家分享一下JavaBean的三种配置方式中的Java类配置的方式。

我们先来回忆一下JavaBean的三种配置方式。

1、基于XML的配置方式;

2、基于注解的配置方式;

3、基于Java类的配置方式;

我们之前可能使用最多的可能就是基于注解的配置方式了,我再次就不再说了,基于XML的配置方式太多臃肿,项目中可能也不太常用,那么我们就来说说基于Java类的配置方式。

Java类的配置方式其实在一定程度上取代了xml的配置方式,特别实在SpringBoot中已经完全采用了Java类的配置方式,我们通过一个简单的例子去了解Java类的配置方式。

第一步:先创建一个User实体类

代码语言:javascript
复制
package com.lbt.demo;

import java.io.Serializable;

/**
 * @Descriptions:用户实体类
 * @author : lbt
 * @date : 2018年5月10日 下午1:58:15
 */
public class User implements Serializable{

  private static final long serialVersionUID = 1L;

  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;
  }

  @Override
  public String toString() {
    return "User [username=" + username + ", password=" + password + ", age=" + age + "]";
  }
  
}

第二步:创建一个数据层

代码语言:javascript
复制
package com.lbt.demo;

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

/**
 * @Descriptions:数据层
 * @author : lbt
 * @date : 2018年5月10日 下午2:14:42
 */
public class UserDao {
  
  public List<User> queryUserList() {
    
    ArrayList<User> list = new ArrayList<User>();
    
    // 模拟数据库数据
    for (int i = 0; i < 10; i++) {
      User user = new User();
      user.setUsername("username" + i);
      user.setPassword("password" + i);
      user.setAge(1 + i);
      list.add(user);
    }
    return list;
  }

}

第三步:创建业务层

代码语言:javascript
复制
package com.lbt.demo;

import java.util.List;

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

/**
 * @Descriptions:业务层
 * @author : lbt
 * @date : 2018年5月10日 下午2:14:59
 */
@Service
public class UserService {

  @Autowired
  private UserDao userDao;
  
  public List<User> queryUserList() {
    // 调用Dao的查询用户方法进行查询
    return userDao.queryUserList();
  }
}

第五步:配置文件

代码语言:javascript
复制
package com.lbt.demo;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * @Descriptions:配置文件类
 * @author : lbt
 * @date : 2018年5月10日 下午2:03:29
 */

@Configuration // 声明为一个配置文件
@ComponentScan(basePackages="com.lbt.demo") //扫描包
public class SpringConfig {
  
  @Bean  // 通过这个注解来标明这是一个Bean对象,相当于xml文件中的<bean>
  public UserDao getUserDao() {
    return new UserDao();
  }

}

前面的四步相信大家已经很熟悉了,可能就是这步大家之前要是没接触可能瞬间跟我一样,有点看不太明白,在整个项目里面找xml配置文件,结果发现却根本没有配置文件!

说一下这三个注解的作用:

@Configuration:这个注解其实就是把我们当前的这个类,声明为一个配置文件,它就相当于我们的xml配置文件,跟它的作用是一样的,只不过用类的方式来进行展现;

@ComponentScan(basePackages="包路径"):这个注解其实就是去扫描我们的包路径,对我们需要扫描的包进行扫描,如果需要扫描多个包,之间用逗号隔开即可;

@Bean:这个注解其实更好理解,它就相当于xml中的<bean>,我们之前通过<bean>标签将它注入到容器中,现在只需要在你所需要注入的资源上面加上@Bean注解,就可以注入到Spring容器中;

第六步:测试

代码语言:javascript
复制
package com.lbt.demo;

import java.util.List;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * @Descriptions:测试方法
 * @author : lbt
 * @date : 2018年5月10日 下午2:07:04
 */
public class Test {

  @SuppressWarnings("resource")
  public static void main(String[] args) {
    
    // 通过Java配置的方式实例化Spring容器
    AnnotationConfigApplicationContext applicationContext = new 
        AnnotationConfigApplicationContext(SpringConfig.class);
    
    // 在Spring容器中获取Bean对象
    UserService userService = applicationContext.getBean(UserService.class);
    
    // 调用对象中的方法
    List<User> userList = userService.queryUserList();
    
    for (User user : userList) {
      System.out.println(user);
    }
    
    // 销毁容器
    applicationContext.destroy();
  }
  
}

测试结果演示

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一个程序员的成长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档