Spring Boot 学习笔记
// 没错,在粗略看完JAVA后,开始尝试Spring Boot了。
1.Spring Boot注解。
@SpringBootApplication :
往往写在与项目同名的入口类里面。这个是整个项目启动的地方.
里面包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot 扫描到Configuration类并把它加入到程序上下文。
@SpringBootApplication
public class PanbolernningSpringApplication {
public static void main(String[] args) {
SpringApplication.run(PanbolernningSpringApplication.class, args);
}
}
@Configuration: 等同于spring的XML配置文件;;使用Java代码可以检查类型安全。
//记得补充,什么时候用。
在Swagger配置的时候,要添加@Configuration和@EnableSwagger2
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.demo"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("panboTest项目的 API接口文档")
.description("官网:http://xxxxxx.com.cn")
.termsOfServiceUrl("http://xxxxxx.com.cn")
.version("1.0")
.build();
}
@RestController:
是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。
在swagger里面需要添加API接口的类文件之前,基本上都有这个注解。
换句话说,Controller前面都要加。(必须项目)
@Controller
@ResponseBody
public class helloController {}
@Autowired
自动导入。建议用@Resource //它们两者的区别是什么?补充上:
@Resource 非常新,是JSR-250规范定义的注解。
@Resource注解在字段上,这样就不用写setter方法了,并且这个注解是属于J2EE的,减少了与spring的耦合。这样代码看起来比较优雅。
@Resource后面没有任何内容,默认通过name属性去匹配Bean,找不到再按Type
如果指定了name或者Type,则根据指定的name和type去匹配bean,任何一个不匹配都会报错。
@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:
@Autowired()@Qualifier("baseDao")
private BaseDao baseDao;
这是一个很神奇的,必须的,常用的注解。
基本上,所有的 声明的变量前面都添加,//好像是声明接口?。。。。应该是接口吧。?
@Resource
private girlRepository girlrepository;
@Resource
private girlService girlservice;
@Value
从yml或者property获取值得时候,(往往是初学者,比如我在自学的时候。)
可以说不用 @Value("${var}")这个注解时候,就必须添加。
自测时候是这两个。
@Value("${cupSize}")
private String cupSize;
//yml里面添加
cupSize: B
@ResponseBody
@ResponseBody一般需要配合@RequestMapping使用。
为什么?
@RequestMapping返回值往往是解析为跳转路径,两个相结合后,表示该方法的返回结果是Json数据。
先来看一段代码。
如果不加@ResponseBody
@RequestMapping("hello")
//@ResponseBody
public String hello(){
return "hello world";
}
加了之后:
@Controller:用于定义控制器类,在spring 项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping。
@Component:当组件不知道是哪一类的时候,加这个就完事了。
@RequestParam:用在方法的参数前面。
@PathVariable:路径变量。
//这俩啥区别。。。
网上说的那些没听懂。。。URL传参的用PathVariable?
public Girl girlUpdate(@PathVariable("id") Integer id,
@RequestParam("cupSize") String cupSize,
@RequestParam("age") Integer age){}
注:这个博客介绍的非常清楚
https://blog.csdn.net/chuck_kui/article/details/55506723
首先 上两个地址:
地址① http://localhost:8989/SSSP/emps?pageNo=2
地址② http://localhost:8989/SSSP/emp/7
如果想获取地址①中的 pageNo的值 ‘2’ ,则使用 @RequestParam ,
如果想获取地址②中的 emp/7 中的 ‘7 ’ 则使用 @PathVariable
不失一般性:
在RequestMapping中创建的是方法时候,用@RequestParam
@RequestMapping("/emps")
public String list(@RequestParam(value="pageNo",required=false,
在RequestMapping中创建方法后面跟着参数时候,用@PathVariable
@RequestMapping(value="/emp/{id}",method=RequestMethod.GET)
public String edit(@PathVariable("id")Integer id,Map<String , Object>map){
上一篇: 阿里云对象存储OSS
下一篇: Spring Boot学习笔记