Spring(1)—初识

  1. Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。
  2. 特点:
    轻量——从大小与开销两方面而言Spring都是轻量的。
    控制反转——Spring通过一种称作控制反转(IoC)的技术促进了低耦合。
    面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发
    容器——Spring包含并管理应用对象的配置和生命周期
    其中最重要的就是AOP和IOC
  3. 一个HelloWorld案例

1.jar包

commons-logging-1.1.1.jar
spring-aop-4.0.0.RELEASE.jar
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.RELEASE.jar
spring-core-4.0.0.RELEASE.jar
spring-expression-4.0.0.RELEASE.jar

2.类HelloWorld

public class HelloWorld {

    public void hello(){
        System.out.println("欢迎学习Spring框架!");
    }
}

3.新建配置文件applicationContext.xml(已经安装了Spring插件),并添加配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">

<!-- 配置Bean -->
    <bean id="helloWorld" class="com.test.hello.HelloWorld"></bean>
</beans>

4.测试类TestHelloWorld

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestHelloWorld {

    public static void main(String[] args) {
        //1.加载applicationContext.xml文件
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

        //2.获取配配置中的实例
        HelloWorld helloWorld = (HelloWorld) ctx.getBean("helloWorld");
        helloWorld.hello();

    }
}

运行结果:

Biz's setter...(这行字符是下一个案例中输出的,用于说明,一旦加载了applicationContext.xml配置文件中的Bean不管有没有执行这段代码,Spring容器都会立即向setter方法中执行注入)
欢迎学习Spring框架!

4 . 一个login案例

因为上一个案例已经把jar包导进来了所以直接上代码
①目录结构
这里写图片描述
②接口及接口的实现类
接口:UserBiz、UserDAO
实现类:UserBizImpl、UserDAOImpl

//UserBiz
public interface UserBiz {

    public boolean login(String username, String password);

}
//UserBizImpl
import com.test.login.Biz.UserBiz;
import com.test.login.dao.UserDAO;

public class UserBizImpl implements UserBiz {

    //使用userDAO接口声明一个对象
    UserDAO userDAO;
    //并为其添加set方法,用于依赖注入
    public void setUserDAO(UserDAO userDAO) {
        this.userDAO = userDAO;
        System.out.println("Biz's setter...");
    }

    @Override
    public boolean login(String username, String password) {
        return userDAO.login(username, password);
    }

}
//UserDAO
public interface UserDAO {

    public boolean login(String username, String password);

}
//UserDAOImpl
import com.test.login.dao.UserDAO;

public class UserDAOImpl implements UserDAO {

    @Override
    public boolean login(String username, String password) {
        if(username.equals("admin") && password.equals("123")){
            return true;
        }
        return false;
    }

}

③配置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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">

<!-- 配置Bean -->
    <bean id="helloWorld" class="com.test.hello.HelloWorld"></bean>

<!-- 配置创建UserDAOImpl的实例 -->
    <bean id="userDAO" class="com.test.login.dao.Impl.UserDAOImpl"></bean>

<!-- 配置创建UserBizImpl的实例,其实现原理是使用反射机制 -->
    <bean id="userBiz" class="com.test.login.Biz.Impl.UserBizImpl">
        <!-- 引用UserDAOImpl的Bean实例,其实现原理是使用setter方法 -->
        <property name="userDAO" ref="userDAO"></property>
    </bean>

</beans>

④测试类TestSpringDI

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.test.login.Biz.UserBiz;

public class TestSpringDI {

    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserBiz userBiz =  (UserBiz) ctx.getBean("userBiz");
        System.out.println(userBiz.login("admin", "123"));

    }

}

⑤结果:

Biz's setter...
true
原文地址:https://www.cnblogs.com/tengpengfei/p/10453971.html