springboot(使用)
springboot的自动配置是引入了started jar之后就自动集成了相应的框架,不做额外的代码覆盖的话就用这个框架的默认的配置,自动装配的框架都会
有默认配置(@EnableAutoConfiguration)(装配好配置好的文件类,默认的文件类)
修改之后需要对build.gradle右键刷新才可
@Configuration 配置类
@Import导入类
@ComponentScan收集spring所有spring类包括@Configuration 搜索beans,并结合 @Autowired 构造器注入。
如果将主应用类放到根目录下,@componentScan不需要任何参数,即可搜集到所有( @Component , @Service , @Repository , @Controller 等)
@ImportResource 加载xml
@PropertySource 加载properties文件 等同于 <context:property-placeholder location="classpath:jdbc.properties" />
@ConfigurationProperties 将配置转化成Java实体
EnableAutoConfiguration自动配置或 @SpringBootApplication添加到一个 @Configuration 类上来选择自动配置。
根据加载的jar依赖自动配置,而且自动配置@Configuration的类
@SpringBootApplication=@Configuration , @EnableAutoConfiguration 和 @ComponentScan
--debug启动可以看当前的自动配置
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})禁用自定义配置,排除相应主类即可(引入jar之后自动引入autoconfig,默认配置集成,不需要的话就exclude)
java -jar 运行jar
java -jar target/myproject-0.0.1-SNAPSHOT.jar
可以设置远程运行的jar包(开启远程调试),在本机调试
$ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n \
-jar target/myproject-0.0.1-SNAPSHOT.jar
CommandLineRunne 命令行启动是指定在应用启动之后马上执行的代码(如果有多个可以设置执行顺序)实现这个接口即可
外化配置:
即参数的引用
使用@Value注解,可以直接将属性值注入到你的beans中 不必自己配置这个工具类springboot自己配置,单纯使用spring的话需要陪置
覆盖顺序:
Spring Boot使用一个非常特别的PropertySource次序来允许对值进行合理的覆盖,需要以下面的次序考虑属性:(越在上优先级越大)
1. 命令行参数
2. 来自于java:comp/env的JNDI属性
3. Java系统属性(System.getProperties())
4. 操作系统环境变量
5. 只有在random.*里包含的属性会产生一个RandomValuePropertySource
6. 在打包的jar外的应用程序配置文件(application.properties,包含YAML和profile变量)
7. 在打包的jar内的应用程序配置文件(application.properties,包含YAML和profile变量)
8. 在@Configuration类上的@PropertySource注解
9. 默认属性(使用SpringApplication.setDefaultProperties指定)
import org.springframework.stereotype.*
import org.springframework.beans.factory.annotation.*
@Component
public class MyBean {
@Value("${name}")
private String name;
// ...
}
注入随机值:
my.secret=${random.value}
my.number=${random.int}
my.bignumber=${random.long}
my.number.less.than.ten=${random.int(10)}
my.number.in.range=${random.int[1024,65536]}
可以通过命令行将参数放到spring环境中,也可以通过application.properties文件将配置放到spring环境中
属性文件可以配置多个,同名或不同名,在不同的路径优先级不同
1. 当前目录下的一个/config子目录
2. 当前目录
3. 一个classpath下的/config包
4. classpath根路径(root)
这个列表是按优先级排序的(列表中位置高的将覆盖位置低的)。
本配置文件可以用本配置文件的值(${})
自动装配的个性化覆盖,排除
覆盖,
1·重新注入相同的类(因为springboot在默认配置的时候用用的id就是根据类名来的,当我们用同样的类那么名字就自然一样,这样就覆盖了默认配置)
如果不想覆盖执行器的访问规则,你可以使用
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)注解该bean,否则使用
@Order(ManagementServerProperties.ACCESS_OVERRIDE_ORDER)注解该bean。
Spring MVC使用HttpMessageConverter接口转换HTTP请求和响应。合理的缺省值被包含的恰到好处(out of the box),例
如对象可以自动转换为JSON(使用Jackson库)或XML(如果Jackson XML扩展可用则使用它,否则使用JAXB)。字符串
默认使用UTF-8编码。
如果需要添加或自定义转换器,你可以使用Spring Boot的HttpMessageConverters类:
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.*;
import org.springframework.http.converter.*;
@Configuration
public class MyConfiguration {
@Bean
public HttpMessageConverters customConverters() {
HttpMessageConverter<?> additional = ...
HttpMessageConverter<?> another = ...
return new HttpMessageConverters(additional, another);
}
}
任何在上下文中出现的HttpMessageConverter bean将会添加到converters列表,你可以通过这种方式覆盖默认的转换器
(converters)。
26.1.2.
2,
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})禁用自定义配置,排除相应主类即可
静态内容:
webappz整个标准只会在打成war时起作用,如果要打成jar包这个是不起作用的,springboot会从classpath下的/static(/public,/resources或/META-INF/resources)的文件
或servletcontext根目录提供静态内容
当你使用这些引擎的任何一种,并采用默认的配置,你的模板将会从src/main/resources/templates目录下自动加载。
目前的打成的jar包不含有webapp下的静态文件,怎么弄?????????????????????????????????????
3,@EnableWebSecurity通过标签关闭默认的配置;重新配置新的配置
@EnableWebSecurity bean来彻底关掉Spring Boot的默认配置。为了对它进行自定义,你需要使用
外部的属性配置和WebSecurityConfigurerAdapter类型的beans(比如,添加基于表单的登陆)
静态注入配置文件到bean的属性:
1,@Value
2,@ConfigurationProperties(prefix="connection") 所有前缀是connection都放在bean的同名属性中
@Component
@ConfigurationProperties(prefix="connection")
public class ConnectionSettings {
private String username;
private InetAddress remoteAddress;
// ... getters and setters
}
在其他类引用:
@Autowired
private ConnectionSettings connection;
通过@EnableConfigurationProperties注入
@Configuration
@EnableConfigurationProperties(ConnectionSettings.class)
public class MyConfiguration {
}
可以设置内嵌的servlet容器,不同容器对jsp的支持受限
Spring Data提供一个额外的功能,直接从接口创建Repository实现,
spring data jpa 是生成实体
传统上,JPA实体类被定义到一个persistence.xml文件中。在Spring Boot中,这个文件不是必需的,并被'实体扫描'替代。默
认情况下,在你主(main)配置类(被@EnableAutoConfiguration或@SpringBootApplication注解的类)下的所有包都将被
查找。(@EnableAutoConfiguration扫描主类所在包及所有子包)
配置文件的使用:
把配置文件中的属性值映射到bean中
1,通过前缀,和bean中对应名称的属性利用get,set自动将配置文件中的同名属性注入,后面直接通过get,set获取(类型安全的配置属性)可以松散的绑定
@Component
@ConfigurationProperties(prefix="connection")
public class ConnectionSettings {
private String username;
private InetAddress remoteAddress;
// ... getters and setters
}
# application.yml
connection:
username: admin
remoteAddress: 192.168.1.1
# additional configuration as required
松散的绑定
@Component
@ConfigurationProperties(prefix="person")
public class ConnectionSettings {
private String firstName;
}
person.firstName 标准驼峰规则
person.first-name 虚线表示,推荐用于.properties和.yml文件中
PERSON_FIRST_NAME 大写形式,使用系统环境变量时推荐
2,直接指定一个属性文件源,bean不需要属性名,后续通过操作这个bean来操作属性文件 (第三方配置)
@Configuration
@ConfigurationProperties
@PropertySource("classpath:paprocesser.properties") //只适用.properties,yml不行
public class ProcesserProperty extends Properties{
}
//或
@ConfigurationProperties(prefix = "foo")
@Bean
public FooComponent fooComponent() {
...
}
paprocesser.propertie
1310=inMoneyProcesser
//获取
String processerBeanName = processerProperty.getProperty("1310");
3,直接用@Value("${pa.url}")拿
@Value("${pa.url}")
private String paUrl ;
自动装配也就意味者会实例化自动配置中需要的bean
这些bean在用的时候可以通过set注入,也可以通过构造方法注入
你可以注入一个自动配置的 org.springframework.data.mongodb.MongoDbFactory 来访问Mongo数据库。
public class MyBean {
private final MongoDbFactory mongo;
@Autowired//构造方法注入
public MyBean(MongoDbFactory mongo) {
this.mongo = mongo;
}
自动装配的触发:
如果发现ActiveMQ在classpath下可用,Spring Boot会配置一个ConnectionFactory。如果需要代理,将会开启一个内嵌的,
已经自动配置好的代理(只要配置中没有指定代理URL)。
jmx相当于jconsle
在spring需要哪些bean被监控管理,只需要在此类上加注解即可,框架扫面到这些注解即会自动导出被监控的bean(springboot只要导入了jmx的包即集成好了jmx直接用即可)
,普通的spring中需要配置下jmx @ManagedResource,@ManagedAttribute,@ManagedOperation)
测试:
使用注解的测试类(依赖注入,可以直接使用spring容器中的bean,否则拿不到上下文)
1,通过application运行的
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = SampleDataJpaApplication.class)
public class CityRepositoryIntegrationTests {
@Autowired
CityRepository repository;
// ...
}
2,以web方式运行的,通过http请求验证的(在一的基础上加@WebIntegrationTest即可)
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = SampleDataJpaApplication.class)
@WebIntegrationTest
public class CityRepositoryIntegrationTests {
@Autowired
CityRepository repository;
RestTemplate restTemplate = new TestRestTemplate();
// ... interact with the running server
}
server.context-path=/settlement
RestTemplate其实就是一个封装了原始的httpclient等基于地址的请求客户端
新的模块的引入:(一个包)
1,**config.java//相当于框架的配置文件,准备配置类
@Configuration
public class PaConfig {
@Bean
public RestTemplate restTemplate(){
RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder();
RestTemplate paTemplate = restTemplateBuilder.build();
paTemplate.getMessageConverters().clear();
paTemplate.getMessageConverters().add(new PaHttpMessageConverter());
return paTemplate;
}
}
2,准备1中需要配置的类
3,使用类
thymeleaf模版
除了一般的springmvc自己的视图解析器功能,还有动静自动切换的功能
http://www.open-open.com/lib/view/open1451625468230.html
模版封装后使用思想:
<!-- Scans the classpath of this application for @Components to deploy as beans -->
<context:component-scan base-package="com.test.thymeleaf.controller" />
<!-- Configures the @Controller programming model -->
<mvc:annotation-driven />
<!--Resolves view names to protected .jsp resources within the /WEB-INF/views directory -->
<!--springMVC+jsp的跳转页面配置-->
<!--<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">-->
<!--<property name="prefix" value="/WEB-INF/views/" />-->
<!--<property name="suffix" value=".jsp" />-->
<!--</bean>-->
<!--springMVC+thymeleaf的跳转页面配置-->
<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".html" />
<property name="templateMode" value="HTML5" />
</bean>
<bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver" />
</bean>
<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">//////spring提供自动封装的类thymeleaf-spring4-2.1.4.RELEASE.jar
<property name="templateEngine" ref="templateEngine" />
</bean>
thymeleaf-2.1.4.RELEASE.jar整个模版框架
thymeleaf-spring4-2.1.4.RELEASE.jar//spring提供自动封装的类
//一份静态的属性一份动态的属性
<img src="../../static/assets/images/qr-code.jpg" th:src="@{${path}}" alt="二维码" />
<p th:utext="#{home.welcome}">Welcome to our grocery store!</p>
<input type="text" name="userName" value="James Carrot" th:value="${user.name}" />
--简单数据转换(数字,日期)
<dt>价格</dt>
<dd th:text="${#numbers.formatDecimal(product.price, 1, 2)}">180</dd>
<dt>进货日期</dt>
<dd th:text="${#dates.format(product.availableFrom, 'yyyy-MM-dd')}">2014-12-01</dd>
--字符串拼接
<dd th:text="${'$'+product.price}">235</dd>
相关推荐
springboot使用Jedis整合redis#SpringBoot笔记(一)SpringBoot基本操作——环境搭建及项目创建(有demo)(二)SpringBoot基本操作——使用IDEA打war包发布及测试(三)SpringBoot基本操作——SpringBoot集成Spring...
springboot使用Redis模板整合redis#SpringBoot笔记(一)SpringBoot基本操作——环境搭建及项目创建(有demo)(二)SpringBoot基本操作——使用IDEA打war包发布及测试(三)SpringBoot基本操作——SpringBoot集成...
public static String post(String url, String params){ log.info("post url:" + url + " params:" + params); String responseStr = ""; try(CloseableHttpClient httpClient = HttpClients.createDefault()) {...
Java SpringBoot 使用JDBC连接Mysql数据库(整套解决方案带源码和安装包) 使用教程 https://blog.csdn.net/Highning0007/article/details/123811891
1. **SpringBoot使用** SpringBoot的核心理念是“约定优于配置”,它通过自动配置和起步依赖来减少常规的Spring应用配置工作。在创建SpringBoot应用时,我们通常会使用`spring-boot-starter`父POM,这将自动引入...
SpringBoot使用基础入门 SpringBoot是由Pivotal团队提供的全新框架,其设计目标是为了简化Spring应用的初始搭建以及开发过程。它集成了大量常用的第三方库配置,如JDBC、MVC、security等,使得开发者能够快速地...
springboot使用rabbitmq工具类,里面包含比较原生的方法,还有一套是我结合springboot框架写的一套方法,里面有两个方法,看情况使用,一般使用框架的方法比较好,因为框架方法时前辈们封装好经过检验的没有问题的方法,...
前后端均有,直接运行,这个是springboot使用ajax进行文件上传,还包括了springboot使用from表单进行文件上传,最适合初学者进行表单的文件上传,或开发自定义文件服务器使用,java web前端上传文件到后台常用三种...
在本文中,我们将深入探讨如何使用Java Service Wrapper将SpringBoot应用部署为Windows服务。 首先,理解SpringBoot的核心特性是必要的。SpringBoot通过默认配置、内嵌Servlet容器(如Tomcat或Jetty)以及自动配置...
springboot 使用quartz+XML格式处理定时任务 springboot 使用quartz+XML格式处理定时任务 springboot 使用quartz+XML格式处理定时任务 功能描述:https://www.cnblogs.com/personblog/p/14030746.html
SpringBoot使用tianai-captcha生成随机图片验证码
SpringBoot使用Validation校验参数.xmind
东方通TongWeb嵌入版 整合SpringBoot使用
springboot使用文档 特性 以及如何部署到云端 构建工具插件 how-to指南
引入相关依赖相关代理配置代理配置类Map, String> params = ImmutableMap.of( registrationBean.
springboot使用AES对密码进行加解密工具类
SpringBoot 使用自定义的方式整合Druid数据源(powernode document)(源代码) SpringBoot 使用自定义的方式整合Druid数据源(powernode document) 一、介绍 二、添加durid的依赖 三、修改application.yml配置文件...
Springboot使用基于POI的HSSF(对应2003 Excel,当然,如果需要使用XSSF,大多数HSSF可以直接替换为XSSF。方法和对象基本对应,有些可以在线搜索)将数据导出到Excel模板中,
这是springboot使用cache来连接redis的源码,包括sql文件。 全部删除(包括缓存):http://127.0.0.1:8016/allDelete 添加数据:http://127.0.0.1:8016/insert 查询数据:http://127.0.0.1:8016/select
springboot使用generator所需generatorConfig.xml、mysql-connector-java-8.0.15.jar、postgresql-9.4.1212.jre7.jar