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 */@Servicepublic 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中的
第六步:测试
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(); } }
测试结果演示
更多精彩内容,请关注“一个程序员的成长”
**推荐阅读:
**
3、程序员培养一个兴趣爱好有多重要?**
**
本文分享自微信公众号 - 一个程序员的成长(xiaozaibuluo)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。