Spring框架初步学习

一、spring框架简单介绍
1.什么是Spring框架

Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。

2.Spring框架的优点

(1)不依赖于应用服务器.
(2)IOC(控制反转)技术实现组件控制。通过DI(依赖注入)技术提高了组件之间的解耦。
(3)通过AOP(面向切面编程)技术实现安全、事务、日志功能的统一管理,提高复用。
(4)Spring框架可以几乎与其他任何框架进行良好的整合使用.
(5)Spring所有项目之间不相互依赖。

二、spring框架案例(以学生为例)
1.配置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:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!--  1. 使用IOC的注解扫描与支持:  base-package - 父路径  -->
    <context:component-scan base-package="com.company"/>

    <!-- 2. 配置数据源   -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/idea?useSSL=true&amp;characterEncoding=utf-8"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>

    <!-- 3.  将dataSource 注入到JDBCTemplate  -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    
</beans>
2.bean层(实体类)
package com.company.bean;

public class Student {
    private int id;
    private String name;
    private String sex;
    private String age;

    public Student() {
    }

    public Student(int id, String name, String sex, String age) {
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}

3.dao层

(1)接口

package com.company.dao;

import com.company.bean.Student;

public interface IStudentDao {
    // 增加学生
    boolean addStu(Student student);
}

(2)实现类

package com.company.dao.impl;

import com.company.bean.Student;
import com.company.dao.IStudentDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class StudentDaoImpl implements IStudentDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    // 注入方法
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate){
        this.jdbcTemplate = jdbcTemplate;
    }

    // 增加学生
    @Override
    public boolean addStu(Student student) {
        boolean flag = false;
        String sql = "insert into tb_student values(?,?,?,?)";

        int row = jdbcTemplate.update(sql, student.getId(), student.getName(), student.getSex(), student.getAge());
        if (row > 0) {
            flag = true;
        }
        return flag;
    }
}

4.service层

(1)接口

package com.company.service;

import com.company.bean.Student;

public interface IStudentService {
    // 增加学生
    boolean addStu(Student student);
}

(2)实现类

package com.company.service.impl;

import com.company.bean.Student;
import com.company.dao.IStudentDao;
import com.company.service.IStudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class StudentServiceImpl implements IStudentService {
    @Autowired
    private IStudentDao studentDao;


    @Override
    public boolean addStu(Student student) {
        return studentDao.addStu(student);
    }
}

5.测试类
package com.company.test;

import com.company.bean.Student;
import com.company.service.impl.StudentServiceImpl;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestSpringJDBC {
    private ApplicationContext ac;

    @Before
    public void into(){
        ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    }

    // 2. 写方法进行测试
    @Test
    public void testAddStu(){
        // 1. 给定学生信息
        Student stu = new Student(1,"小王","男","18");
        // 2. 调用Service进行测试
        StudentServiceImpl ssi = (StudentServiceImpl)ac.getBean("studentServiceImpl");
        boolean b = ssi.addStu(stu);
        if (b) {
            System.out.println("增加学生成功 ... ");
        } else {
            System.out.println("增加学生失败 ... ");
        }

    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值