@wangzhuanyun
2020-09-29T02:24:57.000000Z
字数 4227
阅读 2176
springboot
Spring Boot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目。它使用习惯优于配置的理念让你的项目快速运行起来,使用Spring Boot很容易创建一个独立运行(运行jar,内置Servlet容器,Tomcat、jetty)、准生产级别的基于Spring框架的项目,使用SpringBoot你可以不用或者只需要很少的配置文件。
@SpringBootApplicationpublic 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 方法@SpringBootApplicationpublic 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中对应的keyprivate 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@EnableTransactionManagementpublic 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=falseusername: rootpassword: rootdriverClassName: com.mysql.jdbc.Driver#配置静态资源resources:static-locations: classpath:/templates,classpath:/static/,file:D://#mybatis设置mybatis:type-aliases-package: com.hz.pojomapper-locations: classpath:mapper/*.xml