Spring 基于 xml 配置的快速入门(超详细)

本文介绍了Spring的核心组件,展示了如何引入spring-context依赖,并通过详细步骤演示了如何创建XML配置文件,实现DAO和Service层的解耦。从传统实例化方式,到自定义工厂,再到Spring工厂的使用,逐步解释了不同方式的优缺点,旨在帮助读者快速掌握Spring基于XML的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

123456789101112131415161718192021222324252627282930313233343536373839

spring 有4个核心容器的jar 包 分别是Beans、Core、Context、SpEL这里我们只要引入spring-context依赖就足够了。

Spring 基于 xml 配置的快速入门(超详细)

添加log4j.properties文件放置到src/reources下。

log4j.rootLogger=INFO,A1

log4j.logger.org.apache=INFO

log4j.appender.A1.Target=System.err

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.layout=org.apach 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 e.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n

1234567

ps:这里的日志等级可以改为debug的级别,这里为了简便设置为info的级别,有需要可以自行更改。

接下来就是写下的伪登录业务;

快速写下dao层和service层业务

package com.spring.quickTest;

public interface userDao {

public void queryUser();

}

12345678

package com.spring.quickTest;

public class UserDaoImpl implements userDao {

@Override

public void queryUser() {

System.out.println(“用户登录了”);

}

}

1234567891011

package com.spring.quickTest;

public interface UserService {

void login();

}

123456789

package com.spring.quickTest;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class UserServiceImpl implements UserService {

private userDao userDao;

public void setUserDao(com.spring.quickTest.userDao userDao) {

this.userDao = userDao;

}

@Override

public void login() {

System.out.println(“准备登录中”);

// 1.传统方法

// userDao userDao = new UserDaoImpl();

// userDao.queryUser();

// 2.自定义工厂

// userDao user = (userDao) new UserdaoFactory().getBean();

// user.queryUser();

// 3spring 工厂

// ApplicationContext context = new ClassPathXmlApplicationContext(“applicationContext.xml”);

// userDao userDao = (com.spring.quickTest.userDao) context.getBean(“userDao”);

userDao.queryUser();

}

}

12345678910111213141516171819202122232425262728293031

传统方法下的代码过于耦合;

例如:UserDao userDao = new UserDaoImpl();

如果要更换实现类,或者实现类换一个名字,此时代码会报错,必须要修改原来的业务代码。

我们也可以通过反射的方法自定义一个bean工厂来实现代码的解耦;

package com.spring.quickTest;

public class UserdaoFactory {

public Object getBean() {

try {

return Class.forName(“com.spring.quickTest.UserDaoImpl”).newInstance();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

return null ;

}

}

1234567891011121314151617181920

我们就可以通过自定义的工厂进行实例化,然后调用dao层的方法,避免了耦合。

接下来也可以通过spring的工厂来实现解耦;

写好spring核心文件的配置文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns=“http://www.springframework.org/schema/beans”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值