Spring Boot

---------------------------------------------01,Spring 的纯注解配置-----------------------------------

一,Spring的纯注解配置

1),@Bean

作用:创建bean对象并交给iocMap去管理,等价于<bean>

属性:value:指定iocMap的key,等价于bean标签的id

①,不使用注解配置:

src.main.resource.applicationcontext-dao.xml 中

<!--sqlSession工厂-->

<bean id="sessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">

......

</bean>

②,纯注解配置:

com.xxx.MybatisConfig 中

复制代码
  public class MyBatisConfig {
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
       ......
    }
  }

代码展示:

①,不使用注解配置:

XML 复制代码
<!--sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
</bean>

②,纯注解配置:

java 复制代码
public class MyBatisConfig {
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        return sqlSessionFactoryBean;
    }

}

2),@PropertySource

作用:加载properties文件,等价于<context:properties-placeholder>

属性:value:指定properties的位置

①,不使用注解配置:

src.main.resource.applicationcontext-dao.xml 中

<context:property-placeholder location="classpath:db.properties"></context:property-placeholder>

②,纯注解配置:

com.xxx.DataSourceConfig 中

复制代码
@PropertySource("classpath:db.properties") 
public class DataSourceConfig {
      .......    
}

代码展示:

①,不使用注解配置:

XML 复制代码
 <context:property-placeholder location="classpath:db.properties"></context:property-placeholder>

②,使用注解配置:

java 复制代码
@PropertySource("classpath:db.properties")  
public class DataSourceConfig {
    ......
}

3),@ComponentScan

作用:指定spring要扫描的包,等价于<context:components-scan>

属性:value:指定要扫描的包

①,不使用注解配置:

src.main.resource.applicationcontext-service.xml 中

<context:component-scan base-package="com.hg.service"></context:component-scan>

②,纯注解配置:

com.xxx.DataSourceConfig 中

复制代码
@ComponentScan("com.hg.service")
public class ServiceConfig {
     ......
}

代码展示:

①,不使用注解配置:

XML 复制代码
<context:component-scan base-package="com.hg.service"></context:component-scan>

②,使用注解配置:

java 复制代码
@ComponentScan("com.hg.service")
public class ServiceConfig {
    ......
}

4),@Configuration

作用:标识当前类是一个配置类,即该类等价于applicationContext.xml

5),@Import

作用:导入其他类,等价于<import>

属性:value:配置被导入的类

①,不使用注解配置:

XML 复制代码
    
// 在applicationcontext.xml中引入
<beans>
    ...
    <import resource="classpath:applicationcontext-dao.xml"></import>
    <import resource="classpath:applicationcontext-service.xml"></import>
    <import resource="classpath:applicationcontext-tx.xml"></import>
    ...
</beans>

②,使用注解配置:

java 复制代码
@Import({DataSourceConfig.class, MyBatisConfig.class, ServiceConfig.class, TxConfig.class})
public class SpringConfig {
}

代码展示:

①,不使用注解配置:

web.xml

XML 复制代码
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationcontext-*.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

②, 纯注解配置:

com.xxx.config.SpringConfig

java 复制代码
@Import({DataSourceConfig.class, MyBatisConfig.class, ServiceConfig.class, TxConfig.class})
public class SpringConfig {
 ......
}

-----------------------------------------------------02,Spring Boot入门----------------------------------------

一,Spring Boot的介绍

Spring Boot:不是对spring的增强(spring + springmvc),而是提供了快速开发spring应用的方式。

特点:

简化xml ---> xml变配置类

简化maven配置 ---> starter

内嵌tomcat

二,Spring Boot入门案例

1,pom.xml

XML 复制代码
 ①继承springboot父工程 ----------------------  父工程中的pom.xml添加

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.2.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
XML 复制代码
②添加启动器 --------------------- 子工程中的pom.xml添加

<!--  springboot的web启动器(spring+springmvc)-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2,controller

java 复制代码
@Controller
public class HelloController {

   ... ...
}

3,app

package com.hg; // 注意:启动类所在的包是service,controller的上级目录

java 复制代码
@SpringBootApplication //标识当前类是springboot的启动类
public class SpringbootHelloworldApp{
    public static void main(String[] args) {
       SpringApplication.run(SpringbootHelloworldApp.class, args);
    }
}

-----------------------------------------------------03,Spring Boot的启动器----------------------------------

三,Spring Boot的启动器

1,starter是什么?

starter(启动器):一堆依赖和配置类的集合

2,starter命名规范

官方:

前缀:spring-boot-starter-

规范:spring-boot-starter-模块名

举例:spring-boot-starter-redis

XML 复制代码
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

第三方:

后缀:-spring-boot-starter

规范:模块名-spring-boot-starter

举例:mybatis-spring-boot-starter

四,Spring Boot 的配置文件

1,application.properties

XML 复制代码
server.port=8080
server.servlet.context-path=/springboot_helloworld

2,application.yml-----掌握

XML 复制代码
server:
  port: 80
  servlet:
    context-path: /springboot_helloworld

yaml语法:

① "." ----------> ":"

② 空格缩进

③ "=" ----------> ":+空格"

五,Spring Boot项目的两种发布方式(了解)

1,jar方式

步骤① :在pom.xml中添加一个springboot的构建插件

XML 复制代码
<build>
  <plugins>
     <plugin>
        <groupId>org.springframework.boot</groupId>
        <!--自动检测项目中的 main 函数-->
        <artifactId>spring-boot-maven-plugin</artifactId>
     </plugin>
  </plugins>
</build>

步骤② : 在maven视图中,选择"package",在target中会产生xxx.jar包

步骤③ : 然后在cmd终端发布项目

运行代码:java -jar xxx.jar

2,war方式

步骤① 设置打包方式

XML 复制代码
<packaging>war</packaging>

步骤② 设置tomcat启动器的依赖范围----------pom.xml中

XML 复制代码
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-tomcat</artifactId>
  <!--tomcat启动器依赖范围-->
  <scope>provided</scope>
</dependency>

步骤③ 修改启动类----------在包com.hg中

java 复制代码
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }

    public static void main(String[] args) {
         ... ...
    }
}

------------------------------04,Spring Boot 异常,单元测试,多环境,日志------------------------

六,Spring Boot的全局异常处理器

1,前后端不分离(了解)

步骤① 实现接口HandlerExceptionResolver

java 复制代码
@Component
public class GlobalExceptionHandler implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest,
                                         HttpServletResponse httpServletResponse,
                                         Object o, Exception e) {
        ModelAndView mv = new ModelAndView();
        mv.addObject("error", e);
        mv.setViewName("exception");
        return mv;
    }
}

步骤② 在resource.templates包中创建exception.html

html 复制代码
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>错误提示页面-ArithmeticException</title>
</head>
<body>
出错了,请与管理员联系。。。<br>
<span th:text="${error}"></span>
</body>
</html>

2,前后端分离(重点)

步骤① 注解 @ControllerAdvice

@ExceptionHandler(Exception.class)

@ResponseBody

java 复制代码
@ControllerAdvice
public class AjaxGlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Map<String, Object> AjaxGlobalExceptionHandler(){
        Map<String, Object> map = new HashMap<>();
        map.put("status", 500);
        map.put("errorMsg", "出错了,代码有问题");
        return map;
    }
}

二,springboot整合junit

步骤① dao包

java 复制代码
@Repository
public class UserDaoImpl {
	public void saveUser(){
		System.out.println("insert into users.....");
	}
}

步骤② service包

java 复制代码
@Service
public class UserServiceImpl {

	@Autowired
	private UserDaoImpl userDaoImpl;
	
	public void addUser(){
		this.userDaoImpl.saveUser();
	}
	
}

步骤③ 启动类App

java 复制代码
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class);
    }
}

步骤④ 整合junit------test.java.com.xx.test.Junit

java 复制代码
    /**
     * main方法:
     *      new ClassPathXmlApplicationContext("applicationContext.xml")
     * spring整合junit:
     *      @RunWith(SpringJUnit4ClassRunner.class)
     *      @ContextConfiguration(classes = {"classpath:applicationContext.xml"})
     * springboot整合junit:
     */
    //@RunWith(SpringJUnit4ClassRunner.class)
    //@SpringBootTest(classes = {App.class})



@RunWith(SpringRunner.class)
@SpringBootTest(classes = {App.class})
public class Junit {

    @Autowired
    private UserServiceImpl userServiceimpl;

    @Test
    public void testAddUser(){
        this.userServiceimpl.addUser();
    }
}
相关推荐
青柠编程3 小时前
基于Spring Boot的选课管理系统架构设计
java·spring boot·后端
前端橙一陈3 小时前
LocalStorage Token vs HttpOnly Cookie 认证方案
前端·spring boot
每次的天空5 小时前
Android -Glide实战技术总结
java·spring boot·spring
Code blocks7 小时前
SpringBoot快速生成二维码
java·spring boot·后端
java水泥工7 小时前
师生健康信息管理系统|基于SpringBoot和Vue的师生健康信息管理系统(源码+数据库+文档)
数据库·vue.js·spring boot
上官浩仁7 小时前
springboot3 mybatis 数据库操作入门与实战
spring boot·mybatis·db
Fency咖啡8 小时前
Spring Boot 3.x 开发 Starter 快速上手体验,通过实践理解自动装配原理
java·spring boot·后端
optimistic_chen9 小时前
【Java EE进阶 --- SpringBoot】Mybatis操作数据库(基础)
数据库·经验分享·spring boot·笔记·spring·java-ee·mybatis
Java水解9 小时前
SpringBoot 线程池 配置使用详解
spring boot·后端