Java框架--spring(一、hello world)

Java框架--spring(一、hello world),第1张

Java框架--spring(一、hello world) Java框架–spring(一、hello world)

目录
  • Java框架--spring(一、hello world)
    • 一概述.
    • 二.spring的优点
    • 三.体系结构
    • 四.spring的Hello World搭建
      • Hello World1
      • Hello World2

前言:Spring 使每个人都可以更快、更轻松、更安全地进行 Java 编程。Spring 对速度、简单性和生产力的关注使其成为世界上最受欢迎的 Java框架 (来自官网)

一概述.

Spring 是于 2003 年兴起的一个轻量级的,IOC(控制反转)和 AOP(面向切面编程) 的 Java 开发框架,它是为了简化企业级应用开发而生的。

二.spring的优点
  1. 轻量级

    • jar包小,运行消耗内存资源小,核心包小
  2. 非侵入式

    • spring框架代码不会侵入到我们的业务代码(用户管理 servlet service dao)
    • 不需要继承spring特定的类,通过配置依赖注入后使用类
    • xxServlet extends HttpServlet(侵入式)
  3. IOC

    • 我们以前写代码,在哪儿需要一个对象,就地new一个

    • IOC(Inversion Of Control),控制反转 ( 把创建对象的控制权 反转 给spring)

    • 由 Spring IoC 容器集中统一管理对象,需要用对象时,从容器中拿出来

  4. AOP

    • Aspect Oriented Programming ; 面向切面编程
    • 当在原程序的基础上添加功能时,以前我们需要在源代码中修改(保存日志功能,管理事务commit)
    • AOP的思想:帮我们动态代理调用,而不需要修改源代码
  5. 一站式框架

    • 是一个后端管理框架

    • 集基础容器,数据访问(jdbc,事务管理),web(Servlet),AOP 为一身

三.体系结构

  • Core Container(核心容器):

    • Beans: 管理 Beans
    • Core: Spring 核心
    • Context: 配置文件
    • expressionLanguage: SpEL 表达式
  • AOP(切面编程)

  • AOP 框架: Aspects

  • Data Access(数据库整合):

    • JDBC, ORM, OXM, JMS, Transaction
  • Web(MVC Web 开发):

  • Web, Servlet, Portlet, Struts

  • Test(Junit 整合)

四.spring的Hello World搭建 Hello World1
  1. Maven 导入 spring 核心基础 jar

    org.springframework
    spring-context
    5.2.9.RELEASE

  1. 写spring的配置文件



    

  1. 编写一个实体类
package com.ffyc.spring.model;

import java.util.List;

public class User {
    private String name;
    private Integer age;

    public User() {
        System.out.println("无参构造被调用了");
    }

    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        System.out.println("setName()方法被调用了");
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + ''' +
                ", age=" + age +
                '}';
    }
}
  1. 在将实体类配置到spring配置文件中
 
  1. 测试spring
package test;
import com.ffyc.spring.model.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
    public static void main(String[] args) {
        ApplicationContext app = new ClassPathXmlApplicationContext("springConfig.xml");//ClassPathXmlApplicationContext存放配置实体类的对象的容器
        //User user =  (User) app.getBean("别名");
        User user1 =  (User) app.getBean("user1",User.class);//反射
        User user2 =  (User) app.getBean("user2",User.class);
        System.out.println(user1);
        System.out.println(user2);
    }
}

可以看到执行了一次构造方法,且两个对象地址相同,是同一个对象的引用

Hello World2

创建一个Dao层的类UserDao

package com.ffyc.spring.dao;

public class UserDao {

    public void save(){
        System.out.println("保存用户信息");
    }
}

创建一个服务层的类UserService

package com.ffyc.spring.service;

import com.ffyc.spring.dao.UserDao;

public class UserService {

    private UserDao  userDao;

    public UserDao getUserDao() {
        return userDao;
    }

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void saveUser(){
        userDao.save();//调用UserDao的方法
    }
}

在配置文件中管理这两个类

	
    

    
        
    

测试

package test;

import com.ffyc.spring.model.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test1 {
    public static void main(String[] args) {
        ApplicationContext app = new ClassPathXmlApplicationContext("springConfig.xml");//读取配置文件,创建其中管理的对象
       UserService service = app.getBean("userService",UserService.class);//取出UserService对象
                    service.saveUser();
    }
}

可以看到方法被调用了,我们并没有创建他们的对象,在需要的时候从容器中取出来使用即可

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5434899.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存