Spring框架入门

1.1专业术语了解

组件/框架设计

侵入式设计

引入了框架,对现有的类的结构有影响;即需要实现或继承某些特定类。

例如:     Struts框架  继承ActionSupport

非侵入式设计

引入了框架,对现有的类结构没有影响。

例如:Hibernate框架 / Spring框架

控制反转:

控制反转 ,IOCInversion on Control

    对象的创建交给外部容器完成,这个就做控制反转.

    原本在业务逻辑层里面,需要得到DAO的实现,要么在业务逻辑层直接new,要么使用工厂获取一个。这种叫做【主动获取依赖】。

    在IoC的时候,由容器决定给业务逻辑层注入哪个实例,不再需要自己手动new或者调用工厂get。

依赖注入,  dependency injection

处理对象的依赖关系

      比如现在我们的业务逻辑层实现好了,需要用到数据库,一定有DAO接口。

      这个接口,在不同的持久化实现的时候,接口的实现都不一样!

      容器里面,能够找到合适实现,注入给业务逻辑层,避免自己在业务逻辑层里面去new!可以在任何的时候更换实现,目的是为【去耦合】。

区别:

      控制反转:解决对象创建的问题 【对象创建交给别人】

   依赖注入:在创建完对象后, 对象的关系的处理就是依赖注入 【通过set方法依赖注入】

AOP

         面向切面编程。切面,简单来说来可以理解为一个类,由很多重复代码形成的类。

切面举例:事务、日志、权限;

2.2 Spring框架 

a. 概述

Spring框架,可以解决对象创建以及对象之间依赖关系的一种框架。

且可以和其他框架一起使用;Spring与Struts,  Spring与hibernate

(起到整合(粘合)作用的一个框架)

Spring提供了一站式解决方案:

1) Spring Core  spring的核心功能: IOC容器, 解决对象创建及依赖关系

2) Spring Web  Spring对web模块的支持。

--> 可以与struts整合,让struts的action创建交给spring

   -->spring mvc模式

3) Spring DAO  Spring 对jdbc操作的支持  【JdbcTemplate模板工具类】

4) Spring ORM  spring对orm的支持:

--> 既可以与hibernate整合,【session】

--> 也可以使用spring对hibernate操作的封装

5)Spring AOP  切面编程

6)SpringEE   spring 对javaEE其他模块的支持

3.3 Spring开发步骤

  3.1、导包   

    使用下载安装方式得到的Spring,最少需要的依赖包

     spring-context-4.3.6.RELEASE.jar

        --->Spring里面的核心jar文件之一,负责读取、解析XML配置文件

    spring-aop-4.3.6.RELEASE.jar

        --->面向切面编程的支持,也是核心jar文件之一

    spring-beans-4.3.6.RELEASE.jar

          --->负责beans元素的处理,整个xml配置的规范都在这里定义的

    spring-core-4.3.6.RELEASE.jar

          --->最核心的容器,负责管理一个个的bean(实例)

    spring-expression-4.3.6.RELEASE.jar

          --->Sp EL的支持包,在Spring里面能够直接使用表达式简化XML的配置

-------------以下包可选---------------------

    commons-logging-1.2.jar

          --->Spring里面需要使用的日志记录依赖包,默认情况下,直接使用System.err输出日志,默认级别是info

     log4j-jcl-2.7.jar

          --->把commons-logging的输出,桥接到log4j 2输出,所有的日志级别、输出目标全部受到log4j 2控制。

     log4j-api-2.7.jar

          --->log4j 2的api,一堆接口

    log4j-core-2.7.jar

          --->log4j 2的实现

  3.2、核心配置文件applicationContext.xml

     Spring配置文件:applicationContext.xml / bean.xml

   约束参考:spring-framework-4.3.6.RELEASE\docs\spring-framework-reference\html

<?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">
    <!-- IOC容器的配置: 要创建的所有的对象都配置在这里-->
    <bean id="u1" class="org.fkjava.spring.domain.User"></bean>

</beans>

  3.3、spring的Api

创建一个实体类User 

package org.fkjava.spring.domain;

public class User {
    private String userName;
    //无参构造器
    public User() {
        System.out.println("User的无参构造器被调用");
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        System.out.println("注入的值:" + userName);
        this.userName = userName;
    }

依赖注入的简单测试

package org.fkjava.test;

import org.fkjava.spring.dao.UserDao;
import org.fkjava.spring.domain.User;
import org.fkjava.spring.service.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class 依赖注入的简单测试 {
    public static void main(String[] args) {
        // 得到IOC容器对象,读取【applicationContext.xml】文件。直接得到IOC容器对象       ClassPathXmlApplicationContext cpc = new ClassPathXmlApplicationContext("applicationContext.xml");
    //User u = new User(); //之前获取对象需要创建一个对象,现用spring的Ioc容器后,先得到IOC容器,然后从容器中获取bean         //从IOC容器中获取bean,从而得到对象    User user = (User) cpc.getBean("u1");
     System.out.println(user);   } }输出:

  User的无参构造器被调用  [email protected]
				
时间: 2024-10-11 00:54:35

Spring框架入门的相关文章

Java - Struts框架教程 Hibernate框架教程 Spring框架入门教程(新版) sping mvc spring boot spring cloud Mybatis

https://www.zhihu.com/question/21142149 http://how2j.cn/k/hibernate/hibernate-tutorial/31.html?tid=63 https://www.zhihu.com/question/29444491/answer/146457757 1. Java - Struts框架教程Struts 是Apache软件基金会(ASF)赞助的一个开源项目.通过采用JavaServlet/JSP技术,实现了基于Java EEWeb

1.Spring框架入门

**Spring框架的IOC核心功能快速入门(必须掌握开发的步骤)** 0. 什么是IOC的功能? * IOC -- Inverse of Control,控制反转,将对象的创建权反转给Spring!! * 使用IOC可以解决的程序耦合性高的问题!! 1. 步骤一:下载Spring框架的开发包 * 下载路径为:http://repo.spring.io/webapp/search/artifact/?0&q=spring-framework * 解压后的目录结构如下 * docs -- API和

Spring框架入门:(非原著,转载)

1.1.      耦合性和控制反转: 对象之间的耦合性就是对象之间的依赖性.对象之间的耦合越高,维护成本越高.因此,对象的设计应使类和构件之间的耦合最小. 例: public interface ICustomerDao{      //接口 public boolean getCustomerByAccount(); } public class CustomerDao implements ICustomerDao{ /*实现代码*/ } public class BeanFactory{

使用Spring框架入门一:基于XML配置的IOC/DI的使用

一.Spring框架 1.方法一:逐项导入基础依赖包: spring-core.spring-beans.spring-context.spring-expression 2.方法二:最简洁的导入,直接导入spring-context包: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version&g

spring框架入门之一

一.什么是Spring框架 1.什么是Spring Spring框架是个一个全栈的框架.意思就是使用Spring的框架可以开发web层,service层还有dao层. 本质:Spring就是一个对象的容器,因为在这个容器中有可以处理请求的对象,所以可以用来写web层,因为有service层对象,所以可以用来写service层,因为有dao层对象,所以可以用来操作数据库. Spring的开放性和包容性非常强大,可以进行无缝整个第三方优秀的框架,不会重复造轮子. Spring框架的结构: Sprin

Spring框架入门浅析

一.Spring Bean的配置 在需要被Spring框架创建对象的实体类的类声明前面加注解:@component.这样在Spring扫描的时候,看到该注解就会在容器中创建该实体类的对象.那么,Spring如何可以扫描到该类呢?在配置文件夹下,右键-new-Spring Bean Configuration File,然后创建该文件,文件名可以任意,这里设为"applicationContext.xml". 在applicationContext.xml中,需要配置Spring框架在加

Spring - 框架入门

认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Control,控制反转) 和 AOP(Aspect Oriented Programming,面向切面编程). 什么是 Spring: ① Spring 是一个轻量级的 DI / IoC 和 AOP 容器的开源框架, 来源于 Rod Johnson 在其著作<Expert one on one J2EE design and devel

1.Spring框架入门案例

一.简单入门案例 入门案例:IoC 1.项目创建与结构 2.接口与实现类 User.java接口 package com.jd.ioc; /** * @author weihu * @date 2018/8/8/008 22:29 * @desc 用户接口 */ public interface User { void addUser(); } UserImpl.java实现类 package com.jd.ioc.impl; import com.jd.ioc.User; /** * @aut

使用Spring框架入门二:基于注解+XML配置的IOC/DI的使用

一.简述 本文主要讲使用注解+xml配合使用的几种使用方式.基础课程请看前一节. 二.步骤 1.为Pom.xml中引入依赖:本例中使用的是spring-context包,引入此包时系统会自动导入它的依赖包spring-beans\spring-core\spring-expression\spring-context. <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http: