目录
一·了解springboot
1.springboot的简介
SpringBoot 是 Java 社区最有影响力之一的开源的Spring后端开发框架,也是企业级应用开发的首选技术,Spring Boot 拥有良好的技术基因,它是伴随着Spring 4 而产生的技术框架,在继承了 Spirng 框架所有优点的同时也为开发者带来了巨大的便利,与普通的 Spring 项目相比,SpringBoot 可以让项目的配置更简化、编码更简化、部署更方便,为开发者提供了开箱即用的良好体验,进一步提升了开发者的开发效率。
2.springboot的优缺点
优点
(1)可以快速创建Spring项目及其与主流框架集成;
(2)使用嵌入式容器Servlet容器,应用无须打包成War包;
(3)starters自动依赖与版本控制;
(4)诸多自动配置,简化开发;极大程度自动化配置Spring和第三方库;
(5)生产就绪功能;
(6)无需配置XML,开箱即用;
缺点
(1)Spring的配置灵活性很高,但是同时配置也较为繁琐,对开发人员的要求较高。
(2)相对于轻量级的框架而言,Spring框架因其历史悠久,模块较多,某些模块相对其它框架而言显得比较重。
二·springboot常用注解
1.SpringBootApplication注解
(1)@ComponentScan注解,主要用于类或接口上主要是指定扫描路径,spring会把指定路径下带有指定注解的类自动装配到bean容器里。
(2)@SpringBootConfiguration注解,这个注解主要是继承@Configuration注解,主要用于加载配置文件。这也是一个组合注解,SpringBootConfiguration注解可以用java代码的形式实现spring中xml配置文件配置的效果,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。
(3)@EnableAutoConfiguration注解,可以根据classpath中的jar依赖,自动注册bean,一般用于类或接口上,它尝试根据您添加的jar依赖项自动配置Spring应用程序。
2.SpringComponentScan注解
Spring中@ComponentScan注解的作用就是根据定义的扫描路径,把符合扫描规则的类装配到spring的bean容器中。
特性:
(1)自定扫描路径下边带有@Controller,@Service,@Repository,@Component注解加入spring容器
(2)通过includeFilters加入扫描路径下没有以上注解的类加入spring容器
(3)通过excludeFilters过滤出不用加入spring容器的类
(4)自定义增加了@Component注解的注解方式
注解方式:
(1)扫描包
@ComponentScan(basePackages = “”) //单个
@ComponentScan(basePackages = {“xxx”,“aaa”,“…”}) //多个
@Configuration
@ComponentScan("com.51gjie.spring.service")
public class MyConfig {}
@Configuration
@ComponentScan("com.51gjie.spring.dao","com.51gjie.spring.service")
public class MyConfig {}
@Configuration
@ComponentScan("com.51gjie.spring.*") //通配符匹配所有的包
public class MyConfig {}
(2)扫描类
@ComponentScan(basePackageClasses = “”) //单个
@ComponentScan(basePackageClasses = {“aaa”,“bbb”,“…”}) //多个
@Configuration
@ComponentScan(basePackageClasses = HelloController.class)
public class MyConfig {
}
3.SpringBootConfiguration注解
SpringBootConfiguration是SpringBoot项目的配置注解,这也是一个组合注解,SpringBootConfiguration注解可以用java代码的形式实现spring中xml配置文件配置的效果,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。
4.EnableAutoConfiguration注解
EnableAutoConfiguration是SpringBoot的一个特性,可以根据classpath中的jar依赖,自动注册bean,一般用于类或接口上,它尝试根据您添加的jar依赖项自动配置Spring应用程序。
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
Class[] exclude() default {};
String[] excludeName() default {};
}
5.元注解
@Documented:将会在被此注解注解的元素的javadoc文档中列出注解,一般都打上这个注解没坏处
@Target:注解能被应用的目标元素,比如类、方法、属性、参数等等,需要仔细思考
@Retention:仅在源码保留,还是保留到编译后的字节码,还是到运行时也去加载,超过90%的应用会在运行时去解析注解进行额外的处理,所以大部分情况我们都会设置配置为RetentionPolicy.RUNTIME
@Inherited:如果子类没有定义注解的话,能自动从父类获取定义了继承属性的注解,比如Spring的@Service是没有继承特性的,但是@Transactional是有继承特性的,在OO继承体系中使用Spring注解的时候请特别注意这点,理所当然认为注解是能被子类继承的话可能会引起不必要的Bug,需要仔细斟酌是否开启继承
@Repeatable:Java 8引入的特性,通过关联注解容器定义可重复注解,小小语法糖提高了代码可读性,对于元素有多个重复注解其实是很常见的事情,比如某方法可以是A角色可以访问也可以是B角色可以访问,某方法需要定时任务执行,要在A条件执行也需要在B条件执行
@Native:是否在.h头文件中生成被标记的字段,除非原生程序需要和Java程序交互,否则很少会用到这个元注解
6.基本注解
@Service: 注解在类上,表示这是一个业务层bean
@Controller:注解在类上,表示这是一个控制层bean
@Repository: 注解在类上,表示这是一个数据访问层bean
@Component: 注解在类上,表示通用bean ,value不写默认就是类名首字母小写
@Autowired:按类型注入.默认属性required= true
@Resource: 按名称装配。
7.启动注解
@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解
@ComponentScan:让spring Boot扫描到Configuration类并把它加入到程序上下文
@SpringBootConfiguration :等同于spring的XML配置文件;使用Java代码可以检查类型安全。
@SpringAutoConfiguration :自动配置
8.HTTP注解
@RequestBody:HTTP请求获取请求体(处理复杂数据,比如JSON)
@RequestHeader:HTTP请求获取请求头
@CookieValue:HTTP请求获取cookie
@SessionAttribute:HTTP请求获取会话
@RequestAttribute:HTTP请求获取请求的Attribute中(比如过滤器和拦截器手动设置的一些临时数据),
@RequestParam:HTTP请求获取请求参数(处理简单数据,键值对),
@PathVariable:HTTP请求获取路径片段,
@MatrixAttribute:HTTP请求获取矩阵变量允许我们采用特殊的规则在URL路径后加参数(分号区分不同参数,逗号为参数增加多个值)
9.其他注解
@Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性。
@ConfigurationProperties:给对象赋值,将注解转换成对象。
@RequestMapping:和请求报文是做对应的
@EnableCaching:注解驱动的缓存管理功能
@GeneratedValue:用于标注主键的生成策略,通过 strategy 属性指定
@JsonIgnore:作用是json序列化时将Java bean中的一些属性忽略掉,序列化和反序列化都受影响。
@JoinColumn(name=”loginId”):一对一:本表中指向另一个表的外键。一对多:另一个表指向本表的外键
三.Thymeleaf 常用标签
1.Thymeleaf 常用标签
th:insert 页面片段包含 (类似JSP中的include标签)
th:replace 页面片段包含(类似JSP中的 include标签)
th:each 元素遍历 (类似JSP 中的 c:forEach标签)
th:if 条件判断,如果为真
th:unless 条件判断,如果为假
th:switch 条件判断,进行选择性匹配
th:case 条件判断,进行选择性匹配
th:object 变量声明
th:with 变量声明
th:attr 通用属性修改
th:attrprepend 通用属性修改,将计算结果追加前缀到现有属性值
th:attrappend 通用属性修改,将计算结果追加后缀到现有属性值
th:value 属性值修改,指定标签属性值
th:href 用于设定链接地址
th:src 用于设定链接地址
th:text 用于指定标签显示的文本内容
th:utext 用于指定标签显示的文本内容,对特殊标签不转义
th:fragment 声明片段
th:remove 移除片段
2.Thymeleaf 主要语法
变量表达式 ${...}
选择变量表达式 *{...}
消息表达式 #{...}
链接 URL 表达式 @{...}
片段表达式 ~{...}
3.Thymeleaf 基本语法
标准表达式:
Thymeleaf 为变量所在域提供了一些内置对象,如下
#ctx:上下文对象
#vars:上下文变量
#locale:上下文区域设置
#request: (仅限 Web Context) HttpServletRequest 对象
#response:(仅限 Web Context) HttpServletResponse 对象
#session:(仅限 Web Context) HttpSession 对象
#servletContext :(仅限Web Context) ServletContext 对象
四、代码示例
展示了一个基本的 RESTful API:
1.创建一个名为 "HelloController" 的类文件:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
2.创建一个名为 "Application" 的主启动类文件:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
3.在项目的根目录下创建一个名为 "application.properties" 的配置文件,添加以下内容:
server.port=8080
4.运行 "Application" 类中的 main
方法。
5.在浏览器或者 Postman 中访问 http://localhost:8080/hello,将会返回 "Hello, World!" 的响应结果。
这是一个非常简单的示例,展示了如何使用 Spring Boot 创建一个简单的 RESTful API。可以根据自己的需求进行扩展和修改。