**
SpringBoot学习(一)
一、配置pom.xml(重要)
pom.xml文件添加依赖相当于以前调用别人已经将写好的jar包,需要什么添加什么。
例如:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.java.springboot</groupId>
<artifactId>qiuckhello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>qiuckhello</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
上面是生成Spring Boot的初始带代码。
二、自动生成启动类
@SpringBootApplication
public class QiuckhelloApplication {
public static void main(String[] args) {
SpringApplication.run(QiuckhelloApplication.class, args);
}
}
@SpringBootApplication是启动类的主要注解,看到它代表用的是启动类
三、写web项目涉及到MVC架构,不了解可以看狂神的视频MVC架构讲解
四、实体层
写实体类需要用到这三个注解
@Component代表实体类是这个项目的组件,项目的一部分
下面注解是给实体类的属性赋值
一起拿学习给实体类赋值都是 :
Person person=new Person(属性值1,属性值2,.。。。);
或者
Person person=new Person();
person.set(属性值);
现在是将属性值写在一个文件里,用注解直接让文件里的值和类属性对应。
@PropertySource(value = {“classpath:person.properties”})
这里的person.properties文件里由里的属性值的赋值数据,
@ConfigurationProperties(prefix = “person”)
这个与上面一个有不同,这个是主要配置文件application.properties的一部分。上面一个是特地为属性值的数据写一份文件。
/*
* */
/**
* @ConfigurationProperties将配置文件中配置的每一个属性值映射到组件中
*prefix = "person":配置文件中哪个属性进行一一映射
* 这个组件只有容器中的组件才可以使用@ConfigurationProperties
* @PropertySourc(value = {"classpath:person.properties"})可以指定特定的文件
* @PropertySource(value = {"classpath:person.properties"})
* @ConfigurationProperties(prefix = "person")
* 上面两个注解要一起用
*/
@Component
@PropertySource(value = {"classpath:person.properties"})
@ConfigurationProperties(prefix = "person")
public class person {
// @Value("${person.lastname}")
private String name;
//@Value("#{11*2}")
private int age;
//@Value("true")
private boolean boss;
private Map<String,Object> maps;
private Date date;
private List<Object> lists;
private dog dog;
public person() {
}
public person(String name, int age, boolean boss,
Map<String, Object> maps, Date date, List<Object> lists, com.java.springboot.qiuckhello.bean.dog dog) {
this.name = name;
this.age = age;
this.boss = boss;
this.maps = maps;
this.date = date;
this.lists = lists;
this.dog = dog;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Map<String, Object> getMaps() {
return maps;
}
public void setMaps(Map<String, Object> maps) {
this.maps = maps;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isBoss() {
return boss;
}
public void setBoss(boolean boss) {
this.boss = boss;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public List<Object> getLists() {
return lists;
}
public void setLists(List<Object> lists) {
this.lists = lists;
}
public com.java.springboot.qiuckhello.bean.dog getDog() {
return dog;
}
public void setDog(com.java.springboot.qiuckhello.bean.dog dog) {
this.dog = dog;
}
@Override
public String toString() {
return "person{" +
"name='" + name + '\'' +
", age=" + age +
", boss=" + boss +
", maps=" + maps +
", date=" + date +
", lists=" + lists +
", dog=" + dog +
'}';
}
}
Controller层
//@ResponseBody
//@Controller
@RestController
public class Hellocontroller {
@RequestMapping("/hello")
public String hello(){
return"Hello world qiuck!";
}
}
@RequestMapping("/hello"):
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。RequestMapping注解有六个属性,下面我们把她分成三类进…
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
RequestMapping注解有六个属性,下面我们把她分成三类进行说明。
三类
1、 value,method
value:指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
method:指定请求的method类型, GET、POST、PUT、DELETE等;
2、 consumes,produces
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
3、 params,headers;
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
五、Service层
SpringMVC中的用法讲的很详细
SpringBoot两种方式:
一种是用注解,在主启动类上加@ImportResource(locations={“classpath:bean.xml”})
一种写配置类用@Configuration和 @Bean把这个类放到Spring文件中。
//@Configuration当前类时一个配置类
@Configuration
public class MyAppConfig {
//将方法的返回值添加到容器中,容器中的这个组件默认的id是方法名
@Bean
public HelloService helloService(){
return new HelloService();
}
}
六、@EnableAutoConfiguration自动配置
给自己留个疑问,怎么使用自动配置?大佬解答。