前提:知道SSM,知道maven,开发过项目
如上步骤,会打开一个窗口:
然后选择如下:有的idea Default没有,填写上那个https://start.sprong.io 即可
注意:我用的是jdk1.8,(idea高版本,选择的时候貌似不能选择1.8之前的版本,所以先搞个1.8用着,学习springboot不影响)
选择好后点击Next
选择好后点击Next
然后Next,
Finish即可
如果maven配置的是阿里云的仓库会快一点,当然第一次,会下载很多jar包耐心等待即可
等项目创建完成:目录结构是这样的(我的截图少了三个文件,mvn开头的,因为不需要所以删了)
里面的目录和文件
其中这个就是启动springboot用的,可以看到有main方法
到这里springboot项目就创建完成了
启动springboot有三种方法,(如果报错请检查端口号是否被占用,启动项目默认端口号8080,修改端口号下面说)
这里写一个例子:
写完后启动项目:
在浏览器上访问项目localhost:8080/hello
如果输出有,就ok了
如果你的application.properties还没改回来,配置文件是这样写的:
server.port=8081
server.context-path=/springbootdemo
如果你的application.properties已经改为application.yml,配置文件是这样写的:
server:
port: 8081
context-path: /springbootdemo
这时候再次启动项目,
访问路径就变成了: localhost:8081/springbootdemo/hello
springboot用.yml配置文件
需要注意的是,例如port: 和8080之间有个空格,context-path:和 /springbootdemo之间有个空格
server:
port: 8081
context-path: /springbootdemo
在application.yml中定义一个,gender和age
server:
port: 8081
context-path: /springbootdemo
gender: "男"
age: 18
配置文件:
server:
port: 8081
context-path: /springbootdemo
name: "张三"
gender: "男"
age: 18
content: "name:${name},gender:${gender},age:${age}"
如果有很多属性,不能那么写了,于是简化例子2:
server:
port: 8081
context-path: /springbootdemo
person:
name: "张三"
gender: "男"
age: 18
新建一个类
这里我出现一个错误,百度出如下结果
1.出现spring boot Configuration Annotation Proessor not found in classpath的提示是在用了@ConfigurationProperties这个注解时,所以问题出现在ConfigurationProperties注解。
2.根据提示的not found in classpath,查询此注解的使用关于怎么指定classpath,进而查询location,spring boot1.5以上版本@ConfigurationProperties取消location注解
官方解决方案,Maven引入依赖
<dependency>
<groupId> org.springframework.boot groupId>
<artifactId> spring-boot-configuration-processor artifactId>
<optional> true optional>
dependency>
有的时候开发环境和生产环境,配置不一样,这时可以将配置文件分为两个,然后选择其中一个用即可,复制两个配置文件,在主配置文件中引用即可
还有一个方法可以直接,启动项目的时候选择配置文件,
mvn install
java -jar 文件名.jar –spring.profiles.active=prod
上面后面可以带参数,这时候用的就是application-prod.yml
如果两个配置文件端口号不一样,可以用两个方法启动两个项目
●
@SpringBootApplication // 这是一个组合注解
之前用户使用的是3个注解注解他们的main类。分别是@Configuration,@EnableAutoConfiguration,@ComponentScan。由于这些注解一般都是一起使用,spring boot提供了一个统一的注解@SpringBootApplication。
@SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan。
@SpringBootApplication
public class ApplicationMain {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
分开解释@Configuration,@EnableAutoConfiguration,@ComponentScan。
1、@Configuration:提到@Configuration就要提到他的搭档@Bean。使用这两个注解就可以创建一个简单的spring配置类,可以用来替代相应的xml配置文件。
id = "car" class="com.test.Car">
<property name="wheel" ref = "wheel">property>
id = "wheel" class="com.test.Wheel">
相当于:
@Configuration
public class Conf {
@Bean
public Car car() {
Car car = new Car();
car.setWheel(wheel());
return car;
}
@Bean
public Wheel wheel() {
return new Wheel();
}
}
@Configuration的注解类标识这个类可以使用Spring IoC容器作为bean定义的来源。@Bean注解告诉Spring,一个带有@Bean的注解方法将返回一个对象,该对象应该被注册为在Spring应用程序上下文中的bean。
2、@EnableAutoConfiguration:能够自动配置spring的上下文,试图猜测和配置你想要的bean类,通常会自动根据你的类路径和你的bean定义自动配置。
3、@ComponentScan:会自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。
●
@Value
为了简化读取properties文件中的配置值,spring支持@value注解的方式来获取,这种方式大大简化了项目配置,提高业务中的灵活性。
两种使用方法
1、@Value(“#{configProperties[‘key’]}”)
这种形式的配置中有“configProperties”,其实它指定的是配置文件的加载对象
2、@Value(“${key}”)
这种形式不需要指定具体加载对象,这时候需要一个关键的对象来完成PreferencesPlaceholderConfigurer
●
@Componen
因为在持久层、业务层和控制层中,分别采用@Repository、@Service和@Controller对分层中的类进行注释,而用@Component对那些比较中立的类进行注释。
spring注解中@component就是说把这个类交给Spring管理,因为不清楚这个类是属于哪个层面,所以就用@Component。
●
@Controller // 处理http请求
@RestController // Spring4之后新加的注解,原来返回json需要@ResponseBody配合@Controller
@RequestMapping // 配置url映射
●
@Autowired
@Autowired是一种函数,可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作,@Autowired标注可以放在成员变量上,也可以放在成员变量的set方法上。
这里必须明确:@Autowired是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Qualifier使用。
这个注解就是spring可以自动帮你把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。
●
@ConfigurationProperties
@ConfigurationProperties的大致作用就是通过它可以把properties或者yml配置直接转成对象
因为刚刚查到:
spring boot1.5以上版本@ConfigurationProperties取消location注解
所以请自行百度更多替代方案
●
其他注解
@PathVariable // 获取url中的数据
@RequestParam // 获取请求参数的值
@GetMapping // 组合注解,省略了method = RequestMethod.GET
@PostMapping // 组合注解,method = RequestMethod.POST
@PathVariable 在我看来就是方便restful结构
@RequestParam 这个参数传递使用,多参数也适用
mvn -Dmaven.test.skip -U clean package
运行jar包
java -jar 文件名.jar
将pom.xml中的packageing值(默认:jar)改为war
<packaging>warpackaging>
在src——》main中新建
webapp——》WEB-INF——》web.xml
然后打包:
mvn -Dmaven.test.skip -U clean package
运行war包:
java -jar 文件名.war
war包也可以放到tomcat里面