Spring- day16-DI+MVC

一,DI

依赖注入,前提是先使用注解@Component完成IOC
两个类(对象)间的关系,使用@Autowried完成DI

–1,实现步骤

在这里插入图片描述这里没有创建spring-congfig.xml

创建Dept类
package cn.tedu.pojo;

import org.springframework.stereotype.Component;

@Component
public class Dept {
    public String name ="java开发部";

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

创建User类
package cn.tedu.pojo;

import org.springframework.stereotype.Component;

@Component//交给spring进行Ioc
public class User {
     String name ="mng";
    //描述User和Dept类的关系
    private Dept d;

    public Dept getD() {
        return d;
    }

    public void setD(Dept d) {
        this.d = d;
    }

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

测试
package cn.tedu.di;

import cn.tedu.pojo.Dept;
import cn.tedu.pojo.User;

public class Test1 {
    public static void main(String[] args) {
        User u = new User();
        //先设置部门信息,否则获取的是null
        u.setD(new Dept());
        //获取用户的部门信息
        Dept D = u.getD();
        //获取取部门名称
        System.out.println(D.name);//防止 null.name报错,设置第10行

    }
}

二,SpringDI

在这里插入图片描述

–1, 创建Teacher类

package cn.tedu.pojo2;

import org.springframework.stereotype.Component;

@Component
public class Teacher {
    public String name = "jack";

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

–2, 创建Student类

package cn.tedu.pojo2;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class Student {
    public String name = "mng";
    @Autowired//依赖注入,表示两个类之间的关系
    private  Teacher t;

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

–3, 创建核心配置文件,配置包扫描的路径

创建spring-congfig.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
        <!--包扫描:扫描指定包路径下的所有类
        哪些类有@component注解,就扫描哪些类new-IOC-->
    <context:component-scan base-package="cn.tedu.pojo2"></context:component-scan>
</beans>

Test2

package cn.tedu.di;

import cn.tedu.pojo2.Student;
import cn.tedu.pojo2.Teacher;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test2 {
    public static void main(String[] args) {
        //右侧返回的是Object,左侧
        ClassPathXmlApplicationContext spring = new ClassPathXmlApplicationContext("spring-config.xml");
        Teacher t = (Teacher) spring.getBean("teacher");
        System.out.println(t);
        //DI:在获取学生信息的同时,也获取到了关联的老师信息
        Student s = (Student)spring.getBean("student");
        System.out.println(s);
    }
}

在这里插入图片描述

三,MVC项目

–1,需求

访问链接: http://localhost:8080/car/get
得到JSON数据: {“name”:“保时捷”,“color”:“红色”,“price”:641000.0}
在这里插入图片描述

–2,项目结构

cn.tedu — 放启动类,存子包
cn.tedu.service — 子包,放spring层的代码,接口 + 实现类
cn.tedu.controller — 子包,放springmvc的代码,controller负责接受请求做出响应
cn.tedu.pojo — 子包,放Model层的代码,用来封装数据
在这里插入图片描述

–3,制作前端网页

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>测试 </title>
	</head>
	<body>
		<a href = "http://localhost:8080/hi/get"></a>
	</body>
</html>

–4,制作启动类

package cn.tedu;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
//启动类:默认开启包扫描
public class RunApp {
    public static void main(String[] args) {
        SpringApplication.run(RunApp.class);
    }
}

-5.创建Car类

package cn.tedu.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.stereotype.Component;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Component//spring 提供的IOC

public class Car {
    private Integer id;
    private String name;
    private String type;
    private String color;
    private Double price;

}

–6,创建CarController类

package cn.tedu.controller;

import cn.tedu.pojo.Car;
import cn.tedu.service.CarServiceImp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("hi")
@CrossOrigin

class CarController {
    @Autowired
    private CarServiceImp carService;
    @RequestMapping("get")
    public Car getController(){

        return carService.get();
    }
}

–7,创建CarService接口

package cn.tedu.service;

import cn.tedu.pojo.Car;

public interface CarService {
    //获取汽车数据
    //public abstract Car get(){
    Car get();
}

–8,创建CarServiceImpl实现类

package cn.tedu.service;

import cn.tedu.pojo.Car;
import org.springframework.stereotype.Service;

@Service
public class CarServiceImp implements CarService{

    @Override
    public Car get() {
        Car c =new Car();
        c.setId(10).setPrice(9.9).setColor("red").setName("BWM").setType("x6");
        return c;
    }
}

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值