springboot的入门配置

mac2022-06-30  101

Springboot

1.springboot引言

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

springboot=spring+springmvc

2.springboot的特点

创建独立的spring应用内嵌了一个tomcat,无需war包部署摒弃xml形式的开发简化maven配置以jar包形式运行自动配置spring (原理)

3.springboot的约束

src/main/java com.baizhi 主包 entity 子包 dao service controller util 入口类(main) 存放位置:必须存放在当前主包下和子包平级 src/test/java src/main/resources 配置文件: application 三种配置形式 application.yml application.yaml application.properties src/test/resources

4.springboot的环境搭建

1.基于maven的形式构建springboot应用

1.导入依赖
<!--父级项目依赖--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.8.RELEASE</version> </parent> <!--web启动器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
2.创建入口类
//表示当前项目为springboot应用 @SpringBootApplication public class App { public static void main(String[] args) { // 参数1 当前入口类的类对象 参数2 main函数的参数 SpringApplication.run(App.class,args); } }
3.构建配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XoJqLthT-1569942632777)(E:\framework\springboot\笔记\assets\1561437562772.png)]

server: 层级之间有一个tab键的间隔 port: 8989 属性名和值之间有一个空格的间隔 context-path: /springboot 默认配置文件没有内容 默认springboot端口号为8080 默认没有项目名

默认不支持jsp为视图层模板,[Thymeleaf]

4.测试
@Controller @RequestMapping("user") public class UserController { @ResponseBody @RequestMapping("test") public String test() { return "hello world"; } }

2.基于Spring Initializr构建springboot应用

1.选择Spring Initializr

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sb1E8BjO-1569942632778)(E:\framework\springboot\笔记\assets\1561437241988.png)]

2.填写必要参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3DGUXdmw-1569942632779)(E:\framework\springboot\笔记\assets\1561437358931.png)]

3.勾选场景启动器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Zoi26Es-1569942632780)(E:\framework\springboot\笔记\assets\1561437468672.png)]

5.springboot的相关注解

1.SpringbootApplication 组合注解
由以下的三个注解组成 @Configuration 加在某个类上表示当前类为配置类等同于spring的配置文件 @ComponentScan 组件扫描 类上标明有 @Repository 称为spring的组件 @Component @Service @Controller spring提供注解扫描机制将含有以上四种注解的类交由工厂管理 @EnableAutoConfiguration 支持自动配置.
2.java配置
@Configuration //注解包扫描机制 可以自定义排除 和 只包含如果想让只包含生效则需关闭默认扫描策略useDefaultFilters = false @ComponentScan(basePackages = "com.baizhi.*", includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class)},useDefaultFilters = false) public class PersonConf { @Bean //返回值 表示交由工厂管理的对象 // 方法名 容器中对象的名字 public Person getPerson(){ Person person = new Person(); person.setName("hehe"); person.setPassword("23456"); return person; } } //从工厂种获取相应的bean //获取容器 参数 配之类的类对象 AnnotationConfigApplicationContext annotationConfigApplicationContext=new AnnotationConfigApplicationContext(PersonConf.class); //获取容器种的相应组件 参数 bean的名字或者类型 Person getPerson = (Person)annotationConfigApplicationContext.getBean(Person.class); System.out.println(getPerson);

6.springboot和第三方技术的集成

1.springboot集成mybatis

1.引入相关依赖
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.31</version> </dependency> <!--整合mybatis启动器--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.3</version> </dependency>
2.配置文件
server: port: 8989 context-path: /springboot spring: datasource: type: com.alibaba.druid.pool.DruidDataSource username: root password: root url: jdbc:mysql://localhost:3306/springboot driver-class-name: com.mysql.jdbc.Driver mybatis: type-aliases-package: com.baizhi.entity #指定别名包 mapper-locations: com/baizhi/dao/*Mapper.xml #指定mapper文件的位置
3.在入口类添加dao包的扫描注解@MapperScan
//表示当前项目为springboot应用 @SpringBootApplication //指定dao包的位置 @MapperScan(basePackages = "com.baizhi.dao") public class App { public static void main(String[] args) { // 参数1 当前入口类的类对象 参数2 main函数的参数 SpringApplication.run(App.class,args); } }

2.springboot集成jsp

1.导入jsp解析支持的相关jar
<!--使内嵌的tomcat支持解析jsp--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <!--引入jsp的支持--> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
2.配置视图解析器
#添加视图解析器 spring: mvc: view: prefix: / suffix: .jsp
3.通过插件形式启动
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a3s1a0DF-1569942632783)(E:\framework\springboot\笔记\assets\1561456234905.png)]

4.配置页面的热部署
#提供页面热部署 server: jsp-servlet: init-parameters: development: true

7.自动配置原理

1.属性注入

1.spring中属性注入
声明配置文件 jdbc.password=root jdbc.url=jdbc:mysql://localhost:3306/springboot jdbc.driver-class-name=com.mysql.jdbc.Driver jdbc.username=root 完成属性注入 @Configuration //从配置文件获取值 @PropertySource(value = "jdbc.properties") public class CreateDatasource { /* * 属性注入 * */ @Value("${jdbc.username}") private String username; @Value("${jdbc.url}") private String url; @Value("${jdbc.driver-class-name}") private String driver; @Value("${jdbc.password}") private String password; @Bean public DruidDataSource getDruidDataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(driver); druidDataSource.setUrl(url); druidDataSource.setUsername(username); druidDataSource.setPassword(password); return druidDataSource; } }
2.springboot中的属性注入

1.配置文件中声明相关属性

application.yml server.port=8989 server.context-path=/springboot jdbc.password=root jdbc.url=jdbc:mysql://localhost:3306/springboot jdbc.driver=com.mysql.jdbc.Driver jdbc.username=root

2.创建属性配置类并对属性进行注入

@ConfigurationProperties(prefix = "jdbc") //读取application.yml的属性,并且为当前属性类添加前缀 public class JDBCProperties { private String username; private String password; private String url; private String driver; }

3.创建配置类引入属性配置类

@EnableConfigurationProperties(value = JDBCProperties.class)//获取配置文件类 @Configuration public class JDBCConf { @Autowired JDBCProperties jdbcProperties; @Bean public DruidDataSource getDruidDataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setPassword(jdbcProperties.getPassword()); druidDataSource.setUsername(jdbcProperties.getUsername()); druidDataSource.setUrl(jdbcProperties.getUrl()); druidDataSource.setDriverClassName(jdbcProperties.getDriver()); return druidDataSource; } }

4.配置文件提示的jar

<!--此jar包可以让配置文件有提示--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>

2.@Import

将组件交由工厂管理方式有几种? java配置 @Confirguation @Bean 注解扫描 @ComponentScan 扫描加有@Repository @Component @Service @Controller的组件 @Import 也可以将组件交由工厂管理 注意:使用@Import注解交由工厂管理的对象名称为全限定名. 第一种使用方式 @Import(value = {Black.class,Pink.class}) 第二种使用方式 实现ImportSelector接口和其中方法

实现ImportSelector接口和其中方法

@Override public String[] selectImports(AnnotationMetadata importingClassMetadata) { // 逻辑代码 String[] strs={"com.baizhi.conf.Blue","com.baizhi.conf.Red"}; return strs; }

3.自动配置原理

1.EnableAutoConfiguration
@EnableAutoConfiguration= @AutoConfigurationPackage +@Import(EnableAutoConfigurationImportSelector.class) 注解 @AutoConfigurationPackage 作用就是帮你找到入口类 @Import(EnableAutoConfigurationImportSelector.class) public @interface EnableAutoConfiguration { } @Import(EnableAutoConfigurationImportSelector.class) 作用就是往容器种添加组件,添加一个全限定名数组.

通过selectImports()方法获取到类的全限定名,以数组形式返回,然后加入到spring的容器中.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QvabhFes-1569942632785)(E:\framework\springboot\笔记\assets\1561520713923.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VfP4NeiG-1569942632787)(E:\framework\springboot\笔记\assets\1561520940509.png)]

加载类路径下的META-info/spring.factorys从而获取到相关的自动配置类信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NFRQBeP9-1569942632787)(E:\framework\springboot\笔记\assets\1561521107957.png)]

以org.springframework.boot.autoconfigure.EnableAutoConfiguration为键进行取值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1l2bVyeZ-1569942632790)(E:\framework\springboot\笔记\assets\1561521286949.png)]

自动配置类是springboot默认提供的自动配置.

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\ org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\ org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\ org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\ org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\ org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\ org.springframework.boot.autoconfigure.cloud.CloudAutoConfiguration,\ org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration,\ org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration,\ org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration,\ org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration,\ org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration,\ org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration,\ org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.ldap.LdapDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.ldap.LdapRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.solr.SolrRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration,\ org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration,\ org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration,\ org.springframework.boot.autoconfigure.elasticsearch.jest.JestAutoConfiguration,\ org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration,\ org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration,\ org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration,\ org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration,\ org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration,\ org.springframework.boot.autoconfigure.hazelcast.HazelcastJpaDependencyAutoConfiguration,\ org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration,\ org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration,\ org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration,\ org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration,\ org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration,\ org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration,\ org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration,\ org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration,\ org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration,\ org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration,\ org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration,\ org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration,\ org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration,\ org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration,\ org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration,\ org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration,\ org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration,\ org.springframework.boot.autoconfigure.mail.MailSenderValidatorAutoConfiguration,\ org.springframework.boot.autoconfigure.mobile.DeviceResolverAutoConfiguration,\ org.springframework.boot.autoconfigure.mobile.DeviceDelegatingViewResolverAutoConfiguration,\ org.springframework.boot.autoconfigure.mobile.SitePreferenceAutoConfiguration,\ org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration,\ org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration,\ org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration,\ org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration,\ org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration,\ org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration,\ org.springframework.boot.autoconfigure.security.SecurityFilterAutoConfiguration,\ org.springframework.boot.autoconfigure.security.FallbackWebSecurityAutoConfiguration,\ org.springframework.boot.autoconfigure.security.oauth2.OAuth2AutoConfiguration,\ org.springframework.boot.autoconfigure.sendgrid.SendGridAutoConfiguration,\ org.springframework.boot.autoconfigure.session.SessionAutoConfiguration,\ org.springframework.boot.autoconfigure.social.SocialWebAutoConfiguration,\ org.springframework.boot.autoconfigure.social.FacebookAutoConfiguration,\ org.springframework.boot.autoconfigure.social.LinkedInAutoConfiguration,\ org.springframework.boot.autoconfigure.social.TwitterAutoConfiguration,\ org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration,\ org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration,\ org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration,\ org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration,\ org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration,\ org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration,\ org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration,\ org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration,\ org.springframework.boot.autoconfigure.web.HttpEncodingAutoConfiguration,\ org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration,\ org.springframework.boot.autoconfigure.web.MultipartAutoConfiguration,\ org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration,\ org.springframework.boot.autoconfigure.web.WebClientAutoConfiguration,\ org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration,\ org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration,\ org.springframework.boot.autoconfigure.websocket.WebSocketMessagingAutoConfiguration,\ org.springframework.boot.autoconfigure.webservices.WebServicesAutoConfiguration

以WebMvcAutoConfiguration为例在该类中已经预先配置了相关的一些组件,比如视图解析器,但是默认的视图解析器没有属性值,如果想设置属性值则需通过配置文件进行属性注入方可完成自动配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yq9QM24o-1569942632791)(E:\framework\springboot\笔记\assets\1561522315194.png)]

属性配置类一般一properties结尾,每一个自动配置类都会有一个对应的properties

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kgMwEhYn-1569942632793)(E:\framework\springboot\笔记\assets\1561522386001.png)]

4.启动器

spring-boot-starter-web spring-boot-starter(启动器) -web应用场景 springboot提供的启动器列表 https://docs.spring.io/spring-boot/docs/1.5.22.BUILD-SNAPSHOT/reference/html/using-boot-build-systems.html#using-boot-starter 默认没有为mybatis提供启动器,所以mybatis自己定义了一套启动器.
1.自定义启动器
1.构建java项目 2.引入父级项目.启动器规范的依赖.配置文件提示依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starters</artifactId> <version>1.5.8.RELEASE</version> </parent> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> 3.resources下构建META-INF目录 4.在META-INF目录下创建spring.factories,并且将EnableAutoConfirguration设置为键值,将自动配置类设置为值. org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.baizhi.autoconfirguation.HelloConf 5.将项目install到maven的本地仓库 6.在springboot项目中引用当前自动配置的依赖jar 7.书写配置文件测试自动配置

8.springboot中的细节

1.springboot中的测试

1.引入测试依赖
<!--测试的启动器 可以帮助你快速的完成测试 并且这个启动器中封装了junit--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency>
2.构建测试类
@SpringBootTest(classes = App.class) //声明当前类为springboot的测试类 并且指定入口类 @RunWith(value = SpringRunner.class) // 在容器环境下启动测试 public class TestDao { @Autowired UserDao userDao; @Test public void testUserDao() { List<User> users = userDao.queryAll(); for (User user : users) { System.out.println(user); } } }

2.springboot中的配置文件切分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WWJtmqQn-1569942632794)(E:\framework\springboot\笔记\assets\1561539084795.png)]

创建三个配置文件 application为主配置文件,两个小配置文件分别为application-xxx.yml,如果在主配文件中想切换小配置文件采用以下配置

spring: profiles: active: product

3.springboot中的编码过滤器

4.springboot中的热部署

1.导入相关依赖

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KHcrblWo-1569942632796)(E:\framework\springboot\笔记\assets\1561537178849.png)]

<!--热部署依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <version>1.5.8.RELEASE</version> </dependency> 注意:只支持jsp的热部署,如果想实现后台代码的热部署,需要进行ide(java的集成开发环境)的进行配置
2.开启idea的自动编译

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eNP6bwAA-1569942632797)(E:\framework\springboot\笔记\assets\1561537662596.png)]

3.开启运行自动编译

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ht2rqpkL-1569942632797)(E:\framework\springboot\笔记\assets\1561537823192.png)]

5.springboot中的jar包部署

6.springboot中的日期格式

7.文件上传

最新回复(0)