
3月份入职一家公司一个多月了,进来是各种坑啊,总算在这周知道自己要做什么项目了,虽然项目还没有跑起来,但是里面的技术还是可以了解的。由于之前项目中没有使用过SpringBoot,所以也不是太会,然后自己就看了一下,今天不是想跟大家去讲一SpringBoot,而是想跟大家分享一下JavaBean的三种配置方式中的Java类配置的方式。
我们先来回忆一下JavaBean的三种配置方式。
1、基于XML的配置方式;
2、基于注解的配置方式;
3、基于Java类的配置方式;
我们之前可能使用最多的可能就是基于注解的配置方式了,我再次就不再说了,基于XML的配置方式太多臃肿,项目中可能也不太常用,那么我们就来说说基于Java类的配置方式。
Java类的配置方式其实在一定程度上取代了xml的配置方式,特别实在SpringBoot中已经完全采用了Java类的配置方式,我们通过一个简单的例子去了解Java类的配置方式。
第一步:先创建一个User实体类
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 + "]";
}
}第二步:创建一个数据层
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;
}
}第三步:创建业务层
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();
}
}第五步:配置文件
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容器中;
第六步:测试
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();
}
}测试结果演示