Spring框架及IOC

本文介绍了Spring框架,它是轻量级开源框架,提供IOC、AOP等功能,可开发企业级Java应用。阐述了Spring IoC控制反转概念、容器作用及优势。还详细说明了Spring程序搭建步骤,包括创建各类、接口及配置文件等。

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

一、Spring框架的江湖地位


1、Spring概念

        它是一个轻量级的DI/IoC和 AOP容器的开源框架

        提供了一套适用于任何场景的编程和配置模型来开发企业级java应用程序

        无侵入,不需要使用方代码加入额外的代码,完全隔离

        模块化,功能划分为模块,允许只使用某个模块

2、Spring功能

        提供了IOC机制,避免了硬编码造成的程序耦合

        提供了AOP(面向切面编程方式)功能,实现很大特定功能

        声明事务控制处理

        对JDBC进行了轻量级封装,可以更加灵活的去操作数据库

        提供MVC设计模式

        提供了文件上传、定时器等常用工具

        对其他优秀的框架支持

3、Spring框架

1>web目录下的UserControlleer

        Data Access/Integration层:JDBC、ORM、OXM、JMS和Transaction模块

        Web层:Web、Web-Servlet、WebSocket、Web-Prolet模块

        AOP模块:提供符合AOP标准的面向切面编程的实现

        Core Container(核心容器):Beans、Core、Context和SpEL模块

        Test:JUnit、TestNG对Spring组件进行测试

二、Spring IoC(Inverse of Control) 控制反转 


1、概念

         将你设计好的类交给系统控制,而非类内部控制

         DI依赖注入是实现IOC的一种

         是在运行期,Spring根据配置文件,将其他对象的引用通过组件的提供的setter方法或者构造器进行设定

2、Spring容器作用    

        实例化对象

        分析对象的依赖并注入

3、IOC的优势

        不需要实现框架指定的接口,轻松将组件从Spring中脱离,甚至不需要任何修改

        组件间依赖关系减少,提高代码可重用性

        低耦合,便于维护和管理

三、Spring程序


1、web新建UserControlleer类

package com.chinasoft.etc.spring.web;

import com.chinasoft.etc.spring.services.UserService;
import com.chinasoft.etc.spring.services.impl.UserServiceimpl;

public class UserControlleer {
    private UserService userservice;
    public String login(String username,String password){

        String resultMessage=userservice.login(username,password);
        return resultMessage;
    }
    public void setUserservice(UserService userservice) {
        this.userservice = userservice;
    }
}

2、services下建立UserService接口

package com.chinasoft.etc.spring.services;

public interface UserService {

    String login(String username, String password);
}

3、services下建立impl包,并创建UserServiceimpl类

package com.chinasoft.etc.spring.services.impl;

import com.chinasoft.etc.spring.dao.UserDAO;
import com.chinasoft.etc.spring.dao.model.User;
import com.chinasoft.etc.spring.services.UserService;

public class UserServiceimpl implements UserService {

    private UserDAO userDAO;
    @Override
    public String login(String username, String password) {
        User user=userDAO.findUsernameAndPassword(username,password);
        return user!=null?"成功":"失败";
    }
    public void setUserDAO(UserDAO userDAO) {
        this.userDAO = userDAO;
    }
}

4、dao包下建立UserDao接口

package com.chinasoft.etc.spring.dao;

import com.chinasoft.etc.spring.dao.model.User;

public interface UserDAO {
    User findUsernameAndPassword(String username, String password);
}

5、dao包下建立model,并创建User类

package com.chinasoft.etc.spring.dao.model;

public class User {
    private String username;

    public User(String username) {
        this.username = username;
    }

    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                '}';
    }
}

6、dao包创建impl包,并创建UserDaoImpl类

package com.chinasoft.etc.spring.dao.impl;

import com.chinasoft.etc.spring.dao.UserDAO;
import com.chinasoft.etc.spring.dao.model.User;

public class UserDAOImpl implements UserDAO {

    @Override
    public User findUsernameAndPassword(String username, String password) {
        return new User(username);
    }
}

7、在main包下创建rescources,并创建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.xsd">

    <bean id="userDao" class="com.chinasoft.etc.spring.dao.impl.UserDAOImpl"/>

    <bean id="userService" class="com.chinasoft.etc.spring.services.impl.UserServiceimpl">
        <property name="userDAO" ref="userDao"/>
    </bean>
    <bean id="userController" class="com.chinasoft.etc.spring.web.UserControlleer">
        <property name="userservice" ref="userService"/>
    </bean>
</beans>

8、App里面主函数如下

package com.chinasoft.etc.spring;

import com.chinasoft.etc.spring.dao.impl.UserDAOImpl;
import com.chinasoft.etc.spring.services.impl.UserServiceimpl;
import com.chinasoft.etc.spring.web.UserControlleer;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {

//        loginByset();
        //根据配置文件构建IOC容器
        ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
        System.out.println(ctx);
        //从容器中获取bean
        UserControlleer userControlleer=ctx.getBean("userController",UserControlleer.class);
        String result=userControlleer.login("zhangs","234524");
        System.out.println(result);
    }
}

9、运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值