1.Spring Boot的常用注解
1.SpringBoot/spring
@SpringBootApplication:
包含@Configuration、@EnableAutoConfiguration、@ComponentScan通常用在主类上;
@Repository:
用于标注数据访问组件,即DAO组件;
@Service:
用于标注业务层组件;
@RestController:
用于标注控制层组件(如struts中的action),包含@Controller和@ResponseBody;
@Controller:
用于标注是控制层组件,需要返回页面时请用@Controller而不是@RestController;
@Component:
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注;
@ResponseBody:
表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,
加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中;比如异步获取json数据,加上@responsebody后,会直接返回json数据;
@RequestBody:
参数前加上这个注解之后,认为该参数必填。表示接受json字符串转为对象 List等;
@ComponentScan:
组件扫描。个人理解相当于,如果扫描到有@Component @Controller @Service等这些注解的类,则把这些类注册为bean*;
@Configuration:
指出该类是 Bean 配置的信息源,相当于XML中的,一般加在主类上;
@Bean:
相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理;
@EnableAutoConfiguration:
让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,一般加在主类上;
@AutoWired:
byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作;
当加上(required=false)时,就算找不到bean也不报错;
@Qualifier:
当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用;
@Resource(name=”name”,type=”type”):
没有括号内内容的话,默认byName。与@Autowired干类似的事;
@RequestMapping:
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径;
该注解有六个属性:
params:指定request中必须包含某些参数值是,才让该方法处理。
headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
value:指定请求的实际地址,指定的地址可以是URI Template 模式
method:指定请求的method类型, GET、POST、PUT、DELETE等
consumes:指定处理请求的提交内容类型(Content-Type),如application/json,text/html;
produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。
@GetMapping、@PostMapping等:
相当于@RequestMapping(value=”/”,method=RequestMethod.Get\Post\Put\Delete等) 。是个组合注解;
@RequestParam:
用在方法的参数前面。相当于 request.getParameter();
@PathVariable:
路径变量。如 RequestMapping(“user/get/mac/{macAddress}”) ;
public String getByMacAddress(
@PathVariable(“macAddress”) String macAddress){
//do something;
}
参数与大括号里的名字相同的话,注解后括号里的内容可以不填。
Jpa
@Entity:
@Table(name=”“):
表明这是一个实体类。一般用于jpa ,这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略;
@MappedSuperClass:
用在确定是父类的entity上。父类的属性子类可以继承;
@NoRepositoryBean:
一般用作父类的repository,有这个注解,spring不会去实例化该repository;
@Column:
如果字段名与列名相同,则可以省略;
@Id:
表示该属性为主键;
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator = “repair_seq”):
表示主键生成策略是sequence(可以为Auto、IDENTITY、native等,Auto表示可在多个数据库间切换),指定sequence的名字是repair_seq;
@SequenceGeneretor(name = “repair_seq”, sequenceName = “seq_repair”, allocationSize = 1):
name为sequence的名称,以便使用,sequenceName为数据库的sequence名称,两个名称可以一致;
@Transient:
表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性.
如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic;
@Basic(fetch=FetchType.LAZY):
标记可以指定实体属性的加载方式;
@JsonIgnore:
作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响;
@JoinColumn(name=”loginId”):
一对一:本表中指向另一个表的外键。
一对多:另一个表指向本表的外键。
@OneToOne
@OneToMany
@ManyToOne:
对应Hibernate配置文件中的一对一,一对多,多对一。
3.全局异常处理
@ControllerAdvice:
包含@Component。可以被扫描到。统一处理异常;
@ExceptionHandler(Exception.class):
用在方法上面表示遇到这个异常就执行以下方法。
4.springcloud
@EnableEurekaServer:
用在springboot启动类上,表示这是一个eureka服务注册中心;
@EnableDiscoveryClient:
用在springboot启动类上,表示这是一个服务,可以被注册中心找到;
@LoadBalanced:
开启负载均衡能力;
@EnableCircuitBreaker:
用在启动类上,开启断路器功能;
@HystrixCommand(fallbackMethod=”backMethod”):
用在方法上,fallbackMethod指定断路回调方法;
@EnableConfigServer:
用在启动类上,表示这是一个配置中心,开启Config Server;
@EnableZuulProxy:
开启zuul路由,用在启动类上;
@SpringCloudApplication:
包含
@SpringBootApplication
@EnableDiscovertyClient
@EnableCircuitBreaker
分别是SpringBoot注解、注册服务中心Eureka注解、断路器注解。对于SpringCloud来说,这是每一微服务必须应有的三个注解,所以才推出了@SpringCloudApplication这一注解集合。
2.关于Spring Boot的项目
①创建项目demo_MVC;\n\n 创建产品、订单业务类;
②通过自定义配置文件和@ConfigurationProperties注解的方式,将配置文件中的车牌信息映射到Vehicle类对象,然后在Controller中可以获取到该对象并使用其中的属性值。
③任务描述:
设计一个汽车零部件管理系统,实现对汽车零部件的管理和组装功能。
系统包括以下几个零部件:
发动机(Engine) 轮胎(Tire) 制动系统(BrakeSystem)
燃油系统(FuelSystem) 冷却系统(CoolingSystem)
要求:
1. 设计并创建上述零部件的Java类,每个类中包含相应的功能和属性。
2. 使用Spring Boot的依赖注入方式,将各个零部件注入到Car类中。
3. 创建Car类(classpath:/entity),该类包含一个引擎、四个轮胎以及制动系统、燃油系统和冷却系统。
4. 实现Car类的功能,比如启动引擎、加速车辆、刹车等操作。
5. 使用Spring Boot的自动装配功能,在配置文件或主类中配置各个零部件的自动注入。
④项目文件结构;
dao层代码实现;
controller代码实现;
汽车品牌列表结果截图;
查询某汽车品牌结果截图;
新增汽车品牌数据结果截图;
修改汽车品牌数据结果截图;
删除汽车品牌数据结果截图;
3认识 Thymeleaf
Thymeleaf 是一个流行的模板引擎,该模板引擎采用 Java 语言开发
模板引擎是一个技术名词,是跨领域跨平台的概念,在 Java 语言体系下有模板引擎,在 C#、PHP 语言体系下也有模板引擎,甚至在 JavaScript 中也会用到模板引擎技术,Java 生态下的模板引擎有 Thymeleaf 、Freemaker、Velocity、Beetl(国产) 等。
Thymeleaf 对网络环境不存在严格的要求,既能用于 Web 环境下,也能用于非 Web 环境下。在非 Web 环境下,他能直接显示模板上的静态数据;在 Web 环境下,它能像 Jsp 一样从后台接收数据并替换掉模板上的静态数据。它是基于 HTML 的,以 HTML 标签为载体,Thymeleaf 要寄托在 HTML 标签下实现。
SpringBoot 集成了 Thymeleaf 模板技术,并且 Spring Boot 官方也推荐使用 Thymeleaf 来替代 JSP 技术,Thymeleaf 是另外的一种模板技术,它本身并不属于 Spring Boot,Spring Boot只是很好地集成这种模板技术,作为前端页面的数据展示,在过去的 Java Web 开发中,我们往往会选择使用 Jsp 去完成页面的动态渲染,但是 jsp 需要翻译编译运行,效率低。
4认识Bootstrap
Bootstrap框架是一个功能强大而易于使用的工具,能够帮助开发者快速构建现代化的网站和应用程序。它提供了响应式设计、预定义样式和组件、浏览器兼容性、定制主题以及集成的JavaScript插件等功能。通过使用Bootstrap,你可以节省大量的开发时间,同时确保你的网站在不同设备上获得出色的显示效果。希望通过本文的介绍,你对Bootstrap框架有了更深入的了解,并能够在你的项目中充分利用它的优势。
bootstrap框架的优势
响应式设计:
Bootstrap的响应式设计使得网站能够适应不同屏幕尺寸和设备。它提供了一套灵活的网格系统,使得布局的创建变得简单而直观。不管是在桌面、平板还是手机上,你的网站都能够提供出色的用户体验。
预定义样式和组件:
Bootstrap提供了丰富的预定义样式和组件,使得网站的开发变得轻松。它提供了大量的按钮、表单元素、导航栏、卡片、警告框等组件,让你在网站中快速添加各种功能和元素。此外,这些组件经过精心设计,具有现代而美观的外观。
统一的浏览器兼容性:
Bootstrap经过广泛测试,确保在各种主流浏览器中具有良好的兼容性。不必担心为每个浏览器调试和编写特定的CSS代码,Bootstrap已经为你处理了这些问题,让你专注于更重要的开发任务。
定制主题:
Bootstrap允许你通过自定义主题来满足项目的特定需求。你可以修改变量、样式选项,或者使用Sass预处理器,轻松地创建出与众不同的外观和风格。这意味着你可以为你的网站添加个性化的色彩和风格。