spring配置

目录

一、spring简介

1.什么是spring

2.spring的核心 

 2.1IOC(控制反转)

 ​编辑

优点 

2.2 AOP(面向切面编程) 

优点 

二、 配置步骤

1.导入jar包

2. 引入相关配置文件

applicationContext.xml

log4j.properties

3.编写相关类

接口UserDao

接口实现类UserDaoImpl 

 测试类

4.配置 applicationContext.xml文件

5.运行结果


一、spring简介

1.什么是spring

Spring是一个轻量级的开源Java框架,用于构建企业级应用程序。它提供了一个全面的编程和配置模型,可以用于开发各种类型的应用,包括Web应用、移动应用、微服务等。

Spring框架以其轻量级、灵活、可扩展的特点,成为Java开发中广泛使用的框架之一。它简化了开发过程,提高了代码的可维护性和可测试性,帮助开发人员快速构建高质量的应用程序。

2.spring的核心 

Spring的核心是IoC(控制反转)和AOP(面向切面编程)两个特性。IoC通过将对象的创建和依赖关系的管理交给容器来实现,从而降低了类之间的耦合性。AOP则通过在不修改原有代码的情况下,对系统进行横切关注点的增加,提供了更好的代码重用和模块化。

 2.1IOC(控制反转)

Spring IOC(控制反转)是Spring框架的一个重要特性。Spring IOC是一种设计原则,它允许框架控制应用程序的流程,提供依赖关系并管理它们的生命周期。该框架负责创建和管理应用程序所需的对象(bean)。而不是应用程序负责实例化对象和管理它们的依赖关系,Spring IOC会创建对象并将依赖关系注入到它们中。

IOC 的底层实现原理(工厂+反射+配置文件) 

 
优点 
  1. 松耦合:通过将对象的创建和依赖关系管理责任从应用程序中移除,可以实现松耦合的组件之间的交互。组件可以轻松地进行替换或修改,而不会影响应用程序的其他部分。

  2. 依赖注入:Spring IOC允许进行依赖注入,这是一种从外部源(如XML配置文件或注解)提供对象的依赖关系的机制。这简化了代码,并使更改或配置依赖关系变得更容易。

  3. 可测试性:Spring IOC使得为组件编写单元测试变得更容易,因为它允许依赖关系被轻松地模拟或存根。这促进了更好的测试实践,并提高了应用程序的整体质量。

2.2 AOP(面向切面编程) 

AOP (Aspect-Oriented Programming) 是一种编程范式,旨在将横切关注点(cross-cutting concerns)与应用程序的核心业务逻辑分离开来。在传统的面向对象编程中,例如日志记录、错误处理和安全性等关注点通常分散在多个组件中,使得代码难以理解和维护。AOP 提供了一种模块化这些关注点的方式,引入了切面(aspect)的概念。

优点 
  1. 横切关注点分离:AOP 允许开发人员将横切关注点(如日志记录、性能监控、异常处理等)与核心业务逻辑分开,使代码更加清晰和可维护。

  2. 代码重用和模块化:通过将关注点定义为切面,可以将它们应用于多个组件中,避免了代码重复。这样,开发人员可以更好地实现代码的模块化和重用。

  3. 简化核心业务逻辑:AOP 可以通过将非业务相关的代码移出核心逻辑,使核心逻辑更加简洁和易于理解。

  4. 高层次的抽象:AOP 提供了一种在业务逻辑层次之上操作的方式,使开发人员能够更加关注业务需求而不用过多考虑底层的实现细节。

  5. 声明式编程:AOP 允许开发人员通过声明方式来指定切面的逻辑,而不是在代码中显式地编写关注点的实现。这样,代码更加简洁和可读性更强。

  6. 代码解耦和灵活性:通过使用 AOP,开发人员可以将关注点和核心逻辑解耦,使系统更加灵活和易于扩展。

二、 配置步骤

1.导入jar包

2. 引入相关配置文件

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" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
       http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-4.2.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
</beans>

log4j.properties

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.rootLogger=error, stdout

log4j.logger.com.springframework=DEBUG
log4j.logger.com.ibatis=DEBUG  
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG  
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG  
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG  

log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG  
log4j.logger.java.sql.ResultSet=DEBUG

3.编写相关类

接口UserDao

public interface UserDao {
    public void add();
}

接口实现类UserDaoImpl 

import com.test.mapper.UserDao;
import org.springframework.stereotype.Component;

@Component(value="userDao")
public class UserDaoImpl implements UserDao {
    @Override
    public void add() {
        System.out.println("添加成功");
    }
}

 测试类

import com.test.domain.User;
import com.test.mapper.OrderDao;
import com.test.mapper.UserDao;
import com.test.mapper.impl.UserDaoImpl;
import com.test.mytest.BeanFactory;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestDemo {
    @Test
    public void test2(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao = (UserDao)applicationContext.getBean("userDao");
        userDao.add();
    }
}

4.配置 applicationContext.xml文件

<!-- Spring 的注解开发:组件扫描(类上注解: 可以直接使用属性注入的注解) --> 
<context:component-scan base-package="<!--填写需要扫描类的文件夹路径-->"></context:component-scan>

5.运行结果

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值