欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring Boot 学习笔记

程序员文章站 2022-07-10 18:10:58
...

// 没错,在粗略看完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";
	    }

Spring Boot 学习笔记

加了之后:

Spring Boot 学习笔记

 

@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){

 

相关标签: SpringBoot