微人事第一天:spring和springmvc的整合(无需xml)

前面已经介绍过了spring和springmvc的基本配置过程了,可以得知之前的配置是用xml文件进行配置的,这次我们不使用xml文件就使用java来代替xml文件

1.先写pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>javassm</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

2.SpringConfig文件(相当于配置spring的xml文件)

package org.javaboy.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.stereotype.Controller;

//这个文件的作用就是和传统配置spring的xml文件的作用是一样的
@Configuration
//这个注解的作用是包扫描
@ComponentScan(basePackages = "org.javaboy",useDefaultFilters = true,
excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class)})
public class SpringConfig {

}

这里通过@ComponentScan进行扫描,扫描除了controller的所有类(原理和xml中的原理相同)

3.SpringMvcConfig文件(和配置springmvc的xml文件作用相同)

package org.javaboy.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.stereotype.Controller;

//这个类的作用和springmvc的配置类是一样的
@Configuration
//这个注解是包扫描  这里这扫描controller
@ComponentScan(basePackages = "org.javaboy",useDefaultFilters = false,
includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class),
@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Configuration.class)})
public class SpringMvcConfig {

}

这里@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Configuration.class)的作用是将SpringConfig加载进来,如果不写spring的配置就加载不进来。

4.webInit文件(目的:将spring和springmvc的配置加载进来)

package org.javaboy.config;


import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;

//这个类用来加载spring和springmvc配置
public class WebInit implements WebApplicationInitializer {

    //当容器启动时这个方法会被触发
    public void onStartup(javax.servlet.ServletContext servletContext) throws ServletException {
        //创建AnnotationConfigWebApplicationContext对象
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        //设置servletContext
        ctx.setServletContext(servletContext);
        //注册springmvc的bean
        ctx.register(SpringMvcConfig.class);
        //在springvc中创建核心控制器
        ServletRegistration.Dynamic springmvc = servletContext.addServlet("springmvc", new DispatcherServlet(ctx));
        //在springmvc中创建映射器
        springmvc.addMapping("/");
        //启动步骤设置为1(最先执行)
        springmvc.setLoadOnStartup(1);

    }
}

上面文件的作用和web.xml文件的作用一模一样,都是要将spring和springmvc的配置类加载进来

5.service类和controller类

package org.javaboy.controller;

import org.javaboy.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @Autowired
    private HelloService helloService;

    @GetMapping("/hello")
    public String hello() {
        return helloService.sayHello();
    }
}

package org.javaboy.service;

import org.springframework.stereotype.Service;

@Service
public class HelloService {

    public String sayHello() {
        return "hello javassm!";
    }
}

6.点击启动tomcat
访问路径:http://localhost:8080/javassm_war/hello
显示:
在这里插入图片描述

发布了263 篇原创文章 · 获赞 23 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41998938/article/details/103945393
今日推荐