1. Что такое фреймворк SpringBoot.
SpringBoot — этоБыстрая интеграция сторонних фреймворков;Упрощенная конфигурация xml и полная аннотация;Встроенный http-сервер (jetty и tomcat), который в конечном итоге выполняется как java-приложение.
Примечание. Нижний уровень SpringCloud полагается на SpringBoot для реализации интерфейса микросервиса (веб-компонент SpringBoot интегрирует SpringMVC) и использует SpringMVC для написания интерфейса.
2, анализ принципа SpringBoot.
2.1 Быстро интегрировать сторонние фреймворки.Принцип таков: maven дочерняя-родительская зависимость, которая эквивалентна Jar среды, которую необходимо интегрировать для инкапсуляции информации о зависимости.
2.2 Файла конфигурации вообще нет (аннотировано). Как его инициализировать? Без web.xml как запускается tomcat? Аннотация запускается в версии Spring 2.5 и выше, а встроенная аннотация SpringMVC загружает весь контейнер SpringMVC. Напишите инициализацию конфигурации SpringMVC, используя код Java. Аннотация @EnableWebMvc.
2.3 Встроенный http-сервер, принцип использования языка java для создания контейнера tomcat и загрузки файла класса.
3. Реализация кода.
3.1 Файл pom.xml должен зависеть от пакета jar.
<dependencies>
<!--Java语言操作tomcat -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>8.5.16</version>
</dependency>
<!-- spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.4.RELEASE</version>
<scope>compile</scope>
</dependency>
<!-- spring-mvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.4.RELEASE</version>
<scope>compile</scope>
</dependency>
<!-- tomcat对jsp支持 -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>8.5.16</version>
</dependency>
</dependencies>
3.2, основной класс программы запуска.
public class AppTomcat {
public static void main(String[] args) throws ServletException, LifecycleException {
// 使用Java内置Tomcat运行SpringMVC框架 原理:tomcat加载到
// springmvc注解启动方式,就会创建springmvc容器
start();
}
public static void start() throws ServletException, LifecycleException {
// 创建Tomcat容器
Tomcat tomcatServer = new Tomcat();
// 端口号设置
tomcatServer.setPort(9090);
// 读取项目路径 加载静态资源
StandardContext ctx = (StandardContext) tomcatServer.addWebapp("/", new File("src/main").getAbsolutePath());
// 禁止重新载入
ctx.setReloadable(false);
// class文件读取地址
File additionWebInfClasses = new File("target/classes");
// 创建WebRoot
WebResourceRoot resources = new StandardRoot(ctx);
// tomcat内部读取Class执行
resources.addPreResources(
new DirResourceSet(resources, "/WEB-INF/classes", additionWebInfClasses.getAbsolutePath(), "/"));
tomcatServer.start();
// 异步等待请求执行
tomcatServer.getServer().await();
}
}
3.3 Загрузите класс DispatchServlet SpringMVC.
AbstractAnnotationConfigDispatcherServletInitializer Этот класс отвечает за «инициализацию».Весенний контейнер,Контейнер SpringMVC, настройте DispatcherServlet". Метод getRootConfigClasses() используется для получения конфигурационного файла контейнера приложения Spring, здесь мы передаем предопределенный RootConfig.class; getServletConfigClasses отвечает за получение контейнера приложения Spring MVC, здесь передается предопределенный WebConfig.class in; метод getServletMappings() Отвечает за указание пути, который должен быть отображен DispatcherServlet, здесь стоит «/», что означает, что DispatcherServlet обрабатывает все запросы к приложению.
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
// 加载根配置信息 spring核心
protected Class<?>[] getRootConfigClasses() {
return new Class[] { RootConfig.class };
}
// springmvc 加载 配置信息
protected Class<?>[] getServletConfigClasses() {
return new Class[] { WebConfig.class };
}
// springmvc 拦截url映射 拦截所有请求
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
3.4 Загрузите контейнер Spring
/**
* 根容器
*
*/
@Configuration
@ComponentScan("com.xxxx")
public class RootConfig {
}
3.5 Загрузите контейнер SpringMVC
Так же, как существует несколько способов настройки DispatcherServlet, существует несколько способов включения функций Spring MVC. Получается, что мы вообще используем его в файле xmlmvc:annotation-drivenЭлементы включают функции Spring MVC, управляемые аннотациями.
/**
* springmvc 配置信息
*
* @EnableWebMvc 开启springmvc 功能<br>
*/
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.xxx.controller" })
public class WebConfig extends WebMvcConfigurerAdapter {
// springboot 整合jsp 最好是war
// 需要配置视图转换器
// 创建SpringMVC视图解析器
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
// 可以在JSP页面中通过${}访问beans
viewResolver.setExposeContextBeansAsAttributes(true);
return viewResolver;
}
}
3.6, Методы контроллера и сервисного уровня.
@RestController
public class IndexController {
@Autowired
private UserService userService;
@RequestMapping(value = "/index", produces = "text/html;charset=UTF-8")
public String index() {
// return "纯手写SpringBoot ok啦!!!"
return userService.index();
}
}
@Service
public class UserService {
public String index() {
return "纯手写SpringBoot2,同时加载UserService ok啦!!";
}
}
4. Конкретный исходный код можно найти в облаке кода:git ee.com/Teacher Li использует компьютер_Artimi…