刚使用Spring框架时一般都是通过xml配置文件的方式,进而使用注解方式实现,我们再来学习一种使用Java类配置的方式,也称为Java Config来配置Spring框架。这种方式让我们告别XML文件,完全通过Java体系内的技术点实现。
10余年的崖州网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整崖州建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“崖州网站设计”,“崖州网站推广”以来,每个客户项目都认真落实执行。
好处就在于,在开发过程中不需要在Java类和XML文件中来回切换,而是仅仅编写Java即可。
SpringBoot中,也都是通过该方式实现的配置。从Spring框架的发展历史来渐渐深入吧!
这些版本其实无需记忆,了解版本之间的大概变化即可
在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。
随着JDK 1.5带来的注解支持,Spring2.x可以使用注解对Bean进行声明和注入,大大的减少了xml配置文 件,同时也大大简化了项目的开发。
那么,问题来了,究竟是应该使用xml还是注解呢?
最佳实践:
从Spring3.x开始提供了Java配置方式,使用Java配置方式可以更好的帮助你配置的Bean,并且Spring4.x和Spring boot都推荐使用Java配置的方式
目前我们公司在使用Spring5版本,就在本月【2022年11月】Spring 6也发布了,不过要求使用Java 17及以上版本,后续企业可能会慢慢迭代吧!企业中暂时不会使用这么新的技术
说明:Java配置方式也是Spring4.X推荐使用的方式,作用呢是可以完全替代XML配置,我们就不需要在XML文件和Java类中频繁的切换开发,我们可以完全面向Java语言做开发。
在实战之前我们需要知道这么几个注解
看到这两个标签相信有些朋友就已经知道这两个标签的作用了。
说明:Spring的Java配置是通过@Configuration和@Bean两个注解实现
@Configuration:作用在类上,说明该类相当于一个xml文件
@Bean:作用在方法上,返回对象,将对象存放在Spring容器中,相当于xml文件中的
接下来我们通过一个案例使用Java配置的方式实现Spring框架的配置和使用
首先贴出我们的最终的项目结构
通过使用Java配置的方式实现Spring的bean管理,简单的说使用使用Java类替代xml配置文件实现用户的查询,我们这里将数据封装到List集合中遍历集合打印输出。
1)创建项目,创建普通项目导入jar包或者创建maven项目都行,这里创建maven项目,贴出项目结构和pom.xml配置
版本可以随意切换
4.12 5.1.2.RELEASE
junit junit ${junit.version} test org.springframework spring-context ${spring.version} org.springframework spring-beans ${spring.version} org.springframework spring-webmvc ${spring.version} org.springframework spring-jdbc ${spring.version} org.springframework spring-aspects ${spring.version}
2)编写User类
public class User {
private String userName;
private String userPass;
private Integer userId;
public User(){
super();
}
public User(String userName, String userPass, Integer userId){
super();
this.userName = userName;
this.userPass = userPass;
this.userId = userId;
}
public String getUserName(){
return userName;
}
public void setUserName(String userName){
this.userName = userName;
}
public String getUserPass(){
return userPass;
}
public void setUserPass(String userPass){
this.userPass = userPass;
}
public Integer getUserId(){
return userId;
}
public void setUserId(Integer userId){
this.userId = userId;
}
@Overridepublic String toString(){
return "User [userName=" + userName + ", userPass=" + userPass + ", userId=" + userId + "]";
}
}
3)编写Dao层,使用List集合模拟数据库,实现数据交互
public class UserDao {
public ListqueryAll(){
Listusers = new ArrayList ();
//添加用户,模拟数据库for(int i = 1;i < 11;i++) {
User user = new User("张三"+i, "123456", i);
users.add(user);
}
//返回用户return users;
}
}
4)编写Service层,实现用户业务逻辑
public class UserService {
//注入Dao层对象@Resourceprivate UserDao userDao;
public ListqueryAll(){
return userDao.queryAll();
}
}
小贴士:我们这里的dao层和service层没有写接口
5)编写Spring配置类,替代XML文件,用于实例化Spring容器
//说明该类是一个配置类,相当于一个xml文件
@Configuration
//扫描包
@ComponentScan(basePackages="com.stt")
public class SpringConfig {
//创建dao层对象@Beanpublic UserDao userDao(){
return new UserDao();
}
//创建Service对象@Beanpublic UserService userService(){
return new UserService();
}
}
小贴士:这个类就是我们的配置类,可以看出我们这里使用了三个注解,这几个注解我们在上边说过了,这里就不在赘述。
6)编写测试类,启动Spring容器,并完成测试
public class SpringApplication {
public static void main(String[] args){
//获取SpringConfig类中的所有配置
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
//获取Service对象
UserService userService = context.getBean(UserService.class);
//调用方法
Listlist = userService.queryAll();
for (User user : list) {
System.out.println(user);
}
//销毁容器
context.close();
}
}
通过以上示例我们简单完成使用Java配置方式实现bean管理。其中重点在于配置类和其中的三个注解。
我们在开发项目中会连接数据库,而且数据的配置写在db.properties文件中,我们需要读取该文件并且配置数据源,我们这个案例就来实现连接数据库,并且使用dbcp数据库连接池。
1)使用Java配置怎么读取db.properties文件
2)读取出来之后怎么给dbcp连接池中的driver,url等属性赋值
那么我们带着问题看以下代码配置,在原先配置类的基础上进行修改
配置类:
//说明该类是一个配置类,相当于一个xml文件
@Configuration
//扫描包
@ComponentScan(basePackages="com.stt")
//读取外部配置文件
@PropertySource(value="classpath:resource/db.properties")
public class SpringConfig {
//创建dao层对象@Beanpublic UserDao userDao() {
return new UserDao();
}
//创建Service对象@Beanpublic UserService userService() {
return new UserService();
}
//获取文件中的值,使用Value注解赋值给变量保存起来//注意:我们使用${}表达式获取值,参数与配置文件中的键一致@Value("${driver}")private String driver;
@Value("${url}")private String url;
@Value("${user}")private String user;
@Value("${pass}")private String pass;
//配置数据库连接池@Beanpublic DataSource dataSource() {
//创建DBCP连接池对象
BasicDataSource dataSource = new BasicDataSource();
//设置属性
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(user);
dataSource.setPassword(pass);
return dataSource;
}
}
测试类:
public class SpringApplication {
public static void main(String[] args){
//获取SpringConfig类中的所有配置
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
//获取Service对象
UserService userService = context.getBean(UserService.class);
//获取数据源对象
BasicDataSource dataSource = (BasicDataSource)context.getBean("dataSource");
System.out.println(dataSource);
//调用方法/*Listlist = userService.queryAll();
for (User user : list) {
System.out.println(user);
}*///销毁容器
context.close();
}
}
小贴士:
1)@PropertySource:我们可以使用该注解读取外部配置文件
如何引入多个配置文件?
@PropertySource(value = {"classpath:db.properties","其他文件路径"})
如果文件不存在怎么办?
添加ignoreResourceNotFound属性改为true,文件不存在时也不会报错
@PropertySource(value = {"classpath:db.properties","xxx"},ignoreResourceNotFound = true)
2)@Value:我们使用该注解给变量注入固定的值
至此我们使用Java配置方式完成spring的bean管理可以简单使用了,其中我们使用了一个配置类和多个注解一起完成,希望可以帮助到读者。
文章出自:添甄,如有转载本文请联系【添甄】今日头条号。
新闻名称:Spring的Java配置方式,告别XML配置
当前地址:http://www.csdahua.cn/qtweb/news2/406002.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网