Java -Spring-boot
Spring-Boot
1. Spring-Boot简介
Spring-Boot是Spring官方提供的一个快速开发脚手架,可以基于Spring-Boot快速开发单个微服务。 使用目的:简化Spring应用的初始搭建以及开发过程。如配置文件的配置,繁琐的依赖配置等。
2. Spring-Boot特点
- 独立运行的Spring项目
- 内嵌Tomcat、Jetty或Undertow,不需要部署WAR文件
- 提供运行时的应用监控
- 提供starter简化Maven配置
- 自动配置Spring
3.AppConfig.java 配置类
- @Configuration:声明当前类是一个配置类,相当于Spring配置的xml文件
- @Bean:声明在方法上,将方法的返回值加入Bean容器,相当于Spring配置的标签 2.1 @Bean(name="user"):指定Bean的名称,如果不指定,Bean的名称默认为方法名 2.2 @Bean(name="user",initMethod="init",destroyMethod="destroy"):指定Bean的初始化方法和销毁方法 2.3 关联其他Bean:
- @ComponentScan:自动扫描包,相当于Spring配置的context:component-scan标签
▼java复制代码// 方式一: 调用方法注入 关联的bean @Bean public User user(){ return new User(); } @Bean public UserService userService(){ UserService userService = new UserService(); userService.setUser(user()); return userService; } // 方式二:通过方法形参注入 关联的bean @Bean public UserService userService(User user){ UserService userService = new UserService(); userService.setUser(user); return userService; }
4.测试类Junit4和Junit5
▼java复制代码// Junit4 @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = AppConfig.class) // Junit5 @SpringBootTest(classes = AppConfig.class)
5.主配置中导入其他配置类或者配置文件
▼java复制代码// 方式一:通过@Import注解导入其他配置类 @Configuration @Import({AppConfig2.class,AppConfig3.class}) // 方式二:通过@ImportResource注解导入其他配置文件 @Configuration @ImportResource("classpath:applicationContext.xml") // 方式三:通过@PropertySource注解导入其他配置文件 @Configuration @PropertySource("classpath:jdbc.properties")
6.配置文件的优先级
properties文件的优先级高于yml文件而以下四个位置的配置文件优先级高低顺序如下:
- 项目根目录下的config文件夹
- 项目根目录下
- classpath下的config文件夹
- classpath下
7.读取配置文件(三种方式)
▼java复制代码// 方式一:通过@Value注解读取配置文件 @Value("${name}") private String name; // 方式二:通过Environment读取配置文件 @Autowired private Environment env; env.getProperty("name"); // 方式三:通过@ConfigurationProperties注解读取配置文件 @ConfigurationProperties(prefix = "user")
Spring-Boot 集成ssm
1. Spring-Boot集成Mybatis
- 导入依赖
▼xml复制代码<!-- Spring-Boot集成Mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency>
- 配置数据源
▼yml复制代码spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: 123456
- 配置Mybatis
▼yml复制代码mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.example.demo.entity
- 编写Mapper接口和Mapper.xml文件
▼java复制代码// Mapper接口 public interface UserMapper { List<User> findAll(); } // Mapper.xml文件 <mapper namespace="com.example.demo.mapper.UserMapper"> <select id="findAll" resultType="com.example.demo.entity.User"> select * from user </select> </mapper>
5.使用PageHelper分页插件
▼xml复制代码<!-- 使用PageHelper分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> </dependency>
2. Spring-Boot集成SpringMVC
- 导入依赖
▼xml复制代码<!-- Spring-Boot集成SpringMVC --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
- 配置SpringMVC
▼java复制代码// 配置类 @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("index"); } } // 静态资源配置 spring: mvc: static-path-pattern: /static/** static-locations: classpath:/static/
- 编写Controller
▼java复制代码@Controller public class UserController { @Autowired private UserService userService; @RequestMapping("/findAll") public String findAll(Model model){ List<User> users = userService.findAll(); model.addAttribute("users",users); return "userList"; } }
3. 事务管理
- 导入依赖
▼xml复制代码<!-- 事务管理 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
- 配置事务管理器
▼java复制代码// 配置类 @Configuration public class TransactionConfig { @Autowired private DataSource dataSource; @Bean public DataSourceTransactionManager transactionManager(){ return new DataSourceTransactionManager(dataSource); } }
4.统一异常处理
- 编写异常处理类
▼java复制代码@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public String exceptionHandler(Exception e, Model model){ model.addAttribute("msg",e.getMessage()); return "error"; } }
- 拦截器配置
▼java复制代码// 配置类 @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**"); } }
5. 日志管理
- Slf4j日志
- 使用方式
▼xml复制代码// 方式一:直接使用 private static final Logger logger = LoggerFactory.getLogger(UserController.class); // 方式二:使用注解 @Slf4j
- 日志级别
▼xml复制代码# 日志级别 warn info debug error
4.5、Logback 配置文件的使用
▼xml复制代码<?xml version="1.0" encoding="UTF-8"?> <!-- scan:开启日志框架的热部署,默认值 true 表示开启 scanPeriod:热部署的频率,默认值 60 second debug:设置输出框架内部的日志,默认值 false --> <configuration scan="true" scanPeriod="60 second" debug="false"> <property name="appName" value="springboot demo" /> <contextName>${appName}</contextName> <!-- appender:日志输出对象,配置不同的类拥有不同的功能 ch.qos.logback.core.ConsoleAppender:日志输出到控制台 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd-HH:mm:ss} %level [%thread]-%logger{35} >> %msg %n</pattern> </encoder> </appender> <!-- ch.qos.logback.core.FileAppender:日志输出到文件中 <appender name="fileAppender" class="ch.qos.logback.core.FileAppender"> <encoder> <pattern>%-4relative [%thread] %level %logger{35} - %msg %n</pattern> </encoder> <append>true</append> <file>mylog.log</file> </appender> --> <!-- root 是项目通用的 logger,一般情况下都是使用 root 配置的日志输出 level:按照级别输出日志,日志级别,级别越高,输出的内容越少 --> <root level="info"> <appender-ref ref="STDOUT" /> </root> <!-- 自定义的 logger,用于专门输出特定包中打印的日志 <logger name="cn.wolfcode.crm.mapper" level="trace"> </logger> --> </configuration>
6. 修改banner
- 在src/main/resources目录下新建banner.txt文件
7. 热部署
- 导入依赖
▼xml复制代码<!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
- 配置文件
▼yml复制代码# 热部署 spring: devtools: restart: enabled: true
8. 自动配置
▼text复制代码推荐文章: https://blog.csdn.net/qq_41805567/article/details/129111183
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论

