Spring

Spring是什么?

Spring 是一款主流的 Java EE 轻量级开源框架 ,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring 框架除了自己提供功能外,还提供整合其他技术和框架的能力。

Spring 的狭义和广义

广义的 Spring:Spring 技术栈

广义上的 Spring 泛指以 Spring Framework 为核心的 Spring 技术栈。

狭义的 Spring:Spring Framework

狭义的 Spring 特指 Spring Framework,通常我们将它称为 Spring 框架。

Spring 有两个最核心模块: IoC 和 AOP。

IoC:Inverse of Control 的简写,译为“控制反转”,指把创建对象过程交给 Spring 进行管理。

AOP:Aspect Oriented Programming 的简写,译为“面向切面编程”。AOP 用来封装多个类的公共行为,将那些与业务无关,却为业务模块所共同调用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度。另外,AOP 还解决一些系统层面上的问题,比如日志、事务、权限等。

Spring是如何创建对象的呢?原理是什么?

// dom4j解析beans.xml文件,从中获取class属性值,类的全类名

// 通过反射机制调用无参数构造方法创建对象

Class clazz = Class.forName("类的全类名");

//Object obj = clazz.newInstance();

Object object = clazz.getDeclaredConstructor().newInstance();

程序运行

引入依赖(坐标)

https://mvnrepository.com/ spring junit

创建java

Stundet类 sleep方法

创建配置文件

在resources目录创建一个 Spring 配置文件 beans.xml(配置文件名称可随意命名,如:springs.xm)

id:设置bean的唯一标识

class:设置bean所对应类型的全类名

<bean id=" " class=" "></bean>

创建测试类

ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");//对应spring配置文件名称

Student student =(Student)ac.getBean(" ")//内容对应id值

student.sleep();

运行程序

Spring配置

数据源
1.导入druid连接池坐标 mysql数据库驱动坐标
<!-- Druid连接池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.15</version>
</dependency>

<!-- mysql驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.30</version>
</dependency>
<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.5.RELEASE</version>
 </dependency>
2.在resources下创建jdbc.properties配置文件
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/fuzhuang?serverTimezone=UTC&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456
3.在beans.xml文件里添加jdbc配置
<?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"
       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">


 <!--加载jdbc.properties-->
       <context:property-placeholder location="classpath:jdbc.properties"/>
<!--数据源对象-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
              <property name="driverClassName" value="${jdbc.driver}"/>
              <property name="url" value="${jdbc.url}"/>
              <property name="username" value="${jdbc.username}"/>
              <property name="password" value="${jdbc.password}"/>
</bean>
Spring整合junit
  1. junit单元测试坐标
导入junit单元测试坐标
<dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.7.2</version>
</dependency>
<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.0.5.RELEASE</version>
</dependency>
2.注解加载
@ExtendWith(SpringExtension.class)
//加载spring核心配置文件
@ContextConfiguration("classpath:beans.xml")
3.使用@Autowired注入需要测试的对象
  @Autowired
   对象 对象
Spring集成Junit步骤

①导入spring集成Junit的坐标

②使用@Runwith注解替换原来的运行期

③使用@ContextConfiguration指定配置文件或配置类

④使用@Autowired注入需要测试的对象

⑤创建测试方法进行测试

Spring整合MyBatis
1.添加依赖坐标
<dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.11</version>
</dependency>
 <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.1.0</version>
</dependency>
2.创建实体类
3.书写Mapper相当于接口
4.书写Mapper.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
//ClothingStyleDao对应mapper
<mapper namespace="com.wanxi.dao.ClothingStyleDao">
//parameterType获取参数的类型 resultType返回参数的类型
    <insert  parameterType="" resultType="">
     //增
    </insert>
    <delete>
     //删
    </delete>
    <update>
     //改
    </update>
    <select >
     //查
    </select>
</mapper>
5.书写jdbc.properties
6.书写beans.xml
 <!--mybatis 配置-->
    <!-- 配置SessionFactory的Bean-->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入数据源(连接池) jdbc 的connection需要使用-->
        <property name="dataSource" ref="dataSource"/>
        <!-- 指定MyBatis配置文件的位置 -->
        <property name="configLocation" value="classpath:mybatis.xml"/>
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--指定的是SqlSessionFactory对象的id-->
        <property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
        <!--指定包名,包名是dao接口所在的包名
            MapperScannerConfigurer会扫描这个包中的所有接口,把每个接口都执行
            一次getMapper()方法,得到每个接口的dao对象
            创建好的dao对象放入到spring的容器中
            dao默认对象的名称:是接口名字的首字母小写
        -->
        <property name="basePackage" value="com.wanxi.dao"/>
        <!--多个包-->
        <!--<property name="basePackage" value="com.md.dao,com.md.dao2"/>-->

    </bean>
7.书写mybatis.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <!--settings:控制mybatis全局行为-->
    <settings>
        <!--设置mybatis输出日志-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <!--数据库字段名 _ 转换成小驼峰命名-->
        <setting name = "mapUnderscoreToCamelCase" value = "true"/>
    </settings>
    <!--设置别名 可选-->
    <typeAliases>
        <!--package:把包下面的所有类名作为别名name:实体类所在的包名-->
        <package name="com.wanxi.model"/>
    </typeAliases>

    <!-- sql映射文件的位置 -->
    <mappers>
        <!--name是包名,这个包中所有mapper.xml一次加载-->
        <package name="com.wanxi.dao"/>
        <!--        <mapper resource="com/zn/day4/IAccountMappert.xml"/>-->
    </mappers>

</configuration>
8.书写测试类
Spring MVC

MVC 模式有助于将前端和后端代码拆分为独立的组件,这样更便于管理,而且能够更方便地改动其中的某一部分而不会互相影响。

1.导入mvc坐标
 <!--spring mvc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>
<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.14.1</version>
        </dependency>
2. web WEB-INF下创建spring-mvc.xml
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       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
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">
    <!--配置注解扫描-->
    <context:component-scan base-package="com.wanxi.controller"/>

    <!--配置内部资源视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="suffix" value=".jsp"></property>
    </bean>
 <!--默认底层就会集成jackson进行对象或集合的json格式字符串的转换-->
    <mvc:annotation-driven />
<!--主要是处理web项目的静态文件问题。
    每次请求过来,先经过 DefaultServletHttpRequestHandler 判断是否是静态文件,如果是静态文件,则进行处理,不是则放行交由 DispatcherServlet 控制器处理。-->
    <mvc:default-servlet-handler/>
</beans>
3.web.xml 里配置SpringMVC核心控制器DispathcerServlet

    <!--全局参数-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:beans.xml</param-value>
    </context-param>
    <!--Spring的监听器-->
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
    <!--配置DispatcherServlet-->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>WEB-INF/spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
4.注解意思
@Controller
public class ClothingStyleController{
    @RequestMapping("/back/clothingstyle/delete")
    @ResponseBody
    protected ResultModel clothingstyleDelete(HttpServletRequest req) {

    return resultModel;
    }

@RequestMapping:

作用:映射HTTP请求到某个具体方法。参数内容如下:

value:请求的URL;

method:HTTP请求方式,可选值有RequestMethod.GET,RequestMethod.POST等;

consumes:媒体类型,可选值有"application/json"等;

produces:相应的媒体类型,可选值有"application/json"等;

params:请求的参数;

headers:请求的HTTP头的值。

@ResponseBody

作用:标注某个被访问的方法返回类型前,该方法将会返回JSON类型而不是String或其它类型。需要注意的是,访问路径结尾必须是以.json结尾,否则可能报错。

@RequestBody

作用:将json格式的数据转为java对象。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值