@wangzhuanyun
2020-09-29T02:24:57.000000Z
字数 4227
阅读 1905
springboot
Spring Boot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目。它使用习惯优于配置的理念让你的项目快速运行起来,使用Spring Boot很容易创建一个独立运行(运行jar,内置Servlet容器,Tomcat、jetty)、准生产级别的基于Spring框架的项目,使用SpringBoot你可以不用或者只需要很少的配置文件。
@SpringBootApplication
public class DemoWebApplication {
public static void main(String[] args) {
SpringApplication.run(DemoWebApplication.class, args);
}
}
@SpringBootApplication注解是多个注解的合体,其中最重要的是@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan
@SpringBootConfiguration 继承至@Configuration,其实两种功能一致,都是标注该类为配置类,读取启动类
@EnableAutoConfiguration 这个注解是SpirngBoot自动配置的核心所在,通过此注解,能所有符合自动配置条件的bean的定义加载到spring容器中。
@ComponentScan 该注解会扫描当前包及子包下面被纳入sping容器管理的类。
去掉pom.xml中默认加载的tomcat,并添加servlet-api
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--移除tomcat-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
编写代码,覆盖启动类
使启动类继承 SpringBootServletInitializer 类,并覆盖 configure 方法
@SpringBootApplication
public class SpringbootCSApplication extends SpringBootServletInitializer {
//覆盖configure方法
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringbootCS.class);
}
public static void main(String[] args) {
SpringApplication.run(SpringbootCS.class, args);
}
}
打开Project Settings -> Artifacts ->点击+号并选择web applicaction:Exploded ->From Mod....->点击OK
标注一个类为配置类
用@Bean标注方法等价于XML中配置的bean
@Configuration //容器启动时加载
public class AppBootConfig {
//创建bean实例 别名为stu
@Bean(name = "stu")
public Student getStudent(){
Student stu = new Student();
stu.setStudentName("zhangsan");
return stu;
}
}
读取properties或yml文件
@Configuration
@ConfigurationProperties("application.yml")
public class AppBootConfig {
@Value("${adminname}") //写入yml中对应的key
private String name ;
@Bean(name = "stu")
public Student getStudent(){
Student stu = new Student();
stu.setStudentName(name);
return stu;
}
}
扫包,service、controller.....
@SpringBootApplication
@ComponentScan("com.package1,cn.package2")
public class SpringbootcsApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootcsApplication.class, args);
}
}
注意
@SpringBootApplication注解也包含了@ComponentScan注解,所以在使用中我们也可以通过@SpringBootApplication注解的scanBasePackages属性进行配置
@SpringBootApplication(scanBasePackages = {"com.hz.service","com.hz.controller"})
注意
SpringBoot会默认扫描启动类所在的包及其子包
开启事务注解
@SpringBootApplication
@EnableTransactionManagement
public class SpringbootcsApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootcsApplication.class, args);
}
}
扫描mybatisDao下接口 指定某些类作为Mapper映射文件
@SpringBootApplication(scanBasePackages = {"com.hz.service","com.hz.controller"})
@MapperScan("com.hz.dao")
@EnableTransactionManagement
public class SpringbootcsApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootcsApplication.class, args);
}
}
Application属性文件,按优先级排序,位置高的将覆盖位置
项目的resources即classpath根路径(root)
如果在不同的目录中存在多个配置文件,它的读取顺序是:
1、config/application.properties(项目根目录中config目录下)
2、config/application.yml
3、application.properties(项目根目录下)
4、application.yml
5、resources/config/application.properties(项目resources目录中config目录下)
6、resources/config/application.yml
7、resources/application.properties(项目的resources目录下)
8、resources/application.yml
#设置端口号
server:
port: 8088
#数据库连接设置
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3308/sfshop?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root
password: root
driverClassName: com.mysql.jdbc.Driver
#配置静态资源
resources:
static-locations: classpath:/templates,classpath:/static/,file:D://
#mybatis设置
mybatis:
type-aliases-package: com.hz.pojo
mapper-locations: classpath:mapper/*.xml