Ⅰ springboot常用注解
springboot常用注解有@SpringBootApplication;@Repository;@Service;@RestController;@ResponseBody。
3、starter 是 SpringBoot 中一种非常重要的机制,它可以繁杂的配置统一集成到 starter 中,我们只需要通过 maven 将 starter 依赖引入到项目中,SpringBoot 就能自动扫描并加载相应的默认配置。starter 的出现让开发人员从繁琐的框架配置中解放出来,将更多的精力专注于业务逻辑的开发,极大的提高了开发效率。
Ⅱ 二、SpringBoot的配置–yaml
SpringBoot使用一个全局的配置文件,配置文件名是固定的;
配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;
YAML 是一个标记语言
标记语言:
以前的配置文件;大多都使用的是xxx.xml文件
YAML:以数据为中心,比json、xml等更适合做配置文件
YAML:配置例子
XML:
k:(空格)v : 表示一对键值对(空格必须有)
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
属性和值也是大小写敏感;
k: v :字面直接来写;
字符串默认不用加上单引号或者双引号;
“” :双引号;不会转义字符串里面的特殊字符; 特殊字符会作为本身想表示的意思
name : “zhangsan lisi” :输出 : zhangsan 换行 lisi
'' :单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: 'zhangsan lisi' : 输出 ; zhangsan lisi
k: v : 在下一行来写对象的属性和值的关系 ;注意缩进
对象还是 k: v 的方式
行内写法:
用- 值表示数组中的一个元素
行内写法
配置文件
javaBean:
我们可以导入配置文件处理器,以后编写配置就有提示了
调整 图示:
配置文件yml还是properties他们都能获取到值;
如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value
如果说,我们专门编写一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties
@ImportResource:导入Spring的配置文件,让配置文件里面的内容生效
SpringBoot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;
想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上
不来编写Spring的配置文件
Spring Boot推荐给容器添加组件的方式;推荐全注解的方式
1、配置类@Configuration——>Spring配置文件
2、使用@Bean给容器中添加组件
我们在主配置文件编写的时候,文件名可以是application-{profile}.properties/yml
默认使用application.properties的配置
1、在配置文件中指定spring.profiles.active=dev
2、在命令行:
java -jar spring-boot-02-config.jar –spring.profiles.active=dev;
可以直接在测试的时候,配置传入命令行参数
3.虚拟机参数
-Dspring.profiles.active=dev
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring Boot的默认配置文件
-file:./config/
-file:./
-classpath:/config/
-classpath:/
优先级由高到低,高优先级的配置会覆盖低优先级的配置
SpringBoot会从这四个位置加载主配置文件:互补配置
==我们还可以通过spring.config.location来改变默认的配置文件位置==
项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用互补配置;
java -jar spring-boot-02-config.jar –spring.config.location=G:/application.properties
==SpringBoot也可以从以下位置加载配置;优先级从高到低;高优先级的配置低优先级的配置,所有的配置会形成互补配置==
1.命令行参数
2.来自java:comp/env的JNDI属性
3.java系统属性
4.操作系统环境变量
5.RandomValuePropertySource配置的random.*属性值
==有jar包外箱jar包内进行寻找==
==优先加载带profile==
6.jar包外部的application-{profile}.properties 或 application.yml(带spring.profile)配置文件
7.jar包内部的application-{profile}.properties 或 application.yml(带spring.profile)配置文件
==再来加载不带profile==
8.jar包外部的application.properties或者application.yml(不带spring.profile)配置文件
9.jar包内部的application.properties或者application.yml(不带spring.profile)配置文件
精髓:
1》springboot启动会加载大量的自动配置类
2》我们看我们需要的功能有没有springboot默认写好的自动配置类
3》我们再来看这个自动配置类中到底配置了那些组件;(只要我们要用的组件有,我们就不需要再来配置了)
4》给容器中自动配置类添加组件的时候,会从properties类中获取某些属性,我们就可以在配置文件中指定这些属性的值
Ⅲ spring的配置文件怎么写
标准的Spring配置文件编写:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd" default-autowire="byName" default-lazy-init="true"> <!– 配置数据源 –> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value> jdbc:mysql://localhost/ssh?characterEncoding=utf-8 </value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>123</value> </property> </bean> <!–配置SessionFactory –> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="mappingResources"> <list> <value>com/ssh/pojo/User.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean> <!– 事务管理 –> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <!– hibernateTemplate –> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <!– 配置数据持久层 –> <bean id="userDao" class="com.ssh..impl.UserDaoImpl"> <property name="hibernateTemplate" ref="hibernateTemplate"></property> </bean> <!– 配置业务逻辑层 –> <bean id="userService" class="com.ssh.service.impl.UserServiceImpl"> <property name="userDao" ref="userDao"></property> </bean> <!– 配置控制层 –> <bean id="UserAction" class="com.ssh.action.UserAction" scope="prototype"> <property name="userService" ref="userService"></property> </bean> <!– 配置pojo –> <bean id="User" class="com.ssh.pojo.User" scope="prototype"/></beans>
Ⅳ spring怎么配置注解
@Repository注解:
1 package imooc_spring.test.anotation.myrepository;
2
3 import org.springframework.stereotype.Repository;
4
5 /**
6 * 指定id,默认为dAO,即类名首字母小写,如果指定了名称那么只能ctx.getBean(指定名称)来获取bean
7 * 这个例子里就只能通过ctx.getBean("wyl)来获取DAO 的实例了;
8 *
9 * @author Wei
10 */
11 @Repository("wyl")
12 public class DAO {
13 /**
14 * 返回x和y的乘积
15 *
16 * @param x
17 * @param y
18 * @return x*y
19 */
20 public int multi(int x, int y) {
21 return x * y;
22 }
23 }
复制代码
@Component 注解:
复制代码
1 package imooc_spring.test.anotation;
2
3 import org.springframework.stereotype.Component;
4 /**
5 * Component 注解
6 * @author Wei
7 *
8 */
9 @Component
10 public class TestObj {
11 public void SayHi(){
12 System.out.println("Hi this is TestObj.SayHi()…");
13 }
14 }
复制代码
@Controller注解闷吵:
复制代码
1 package imooc_spring.test.anotation;
2
3 import org.springframework.stereotype.Controller;
4
5 @Controller
6 public class UserController {
7 public void execute(){
8 System.out.println("UserController.execute()…");
9 }
10 }
复制代码
@Repository注解:
复制代码
1 package imooc_spring.test.anotation;
2
3 import org.springframework.stereotype.Repository;
4
5 //@Repository
6 @Repository("wyl_repo")
7 public class UserRepositoryImpl implements IUserRepository {
8 //模誉拍拟持久化层
9 庆罩羡 @Override
10 public void save() {
11 // TODO Auto-generated method stub
12 System.out.println("UserRepositoryImpl.save()…");
13 }
14
15 }
复制代码
@Service注解:
复制代码
1 package imooc_spring.test.anotation;
2
3 import org.springframework.stereotype.Service;
4
5 @Service
6 public class UserService {
7 public void add(){
8 System.out.println("UserService.add()…");
9 }
10 }
Ⅳ Spring Boot 第二弹,配置文件详解-史上最全
Spring Boot 官方 提供了两种常用的配置文件格式,分别是 properties 、 YML 格式。相比于 properties 来说, YML 更加年轻,层级也是更加分明。 强烈推荐使用 YML 格式
Spring Boot项目 启动会扫描以下位置的 application.properties 或者 application.yml 作为默认的配置文件.
徒手撕源码
内部类Loader的load方法
getSearchLocations()方法
asResolvedSet()
下面给出优先级 从高到低 的配置文件排列顺序:
以设置应用端口为例 初体验Spring Boot配置文件
properties后缀结尾(application.properties)
yml/yaml后缀结尾(application.yml/application.yaml)
数字,字符串,布尔,日期
对象、Map
数组
数字,字符串,布尔,日期
对象、Map
数组
@ConfigurationProperties(prefix = “person”)详解
标注在类上
标注在方法上
综上所述 @ConfigurationProperties 注解能够轻松的让配置文件跟实体类绑定在一起。
值得关注的是: @ConfigurationProperties 这个注解仅仅是支持从 Spring Boot的默认配置文件 中取值,也就是 application.properties 、 application.yml 、 application.yaml ,那我们如何从自定义配置文件取值呢??? 别着急,有解决办法,那就是再加一个注解: @PropertySource(value = “classpath:custom-profile.properties”) ,下面会有对 @PropertySource 注解的介绍。请耐心往下面看。
使用@PropertySource注解
对应配置文件
创建两个配置文件 custom-profile.yml、custom-profile1.yml ,如下去引入。
我们可以通过控制变量法进行测试,具体过程我这里就不赘述了。 直接说 结论 吧: Spring加载顺序 为 从左到右顺序加载 ,后加载的会 覆盖 先加载的属性值。
另外需要注意的是 : @PropertySource 默认加载 xxx.properties类型 的配置文件,不能加载 YML格式 的配置文件。如何解决呢?下面来解决这一问题
对应配置文件:
编写PropertiesController
扩展功能
application.yml 主配置文件
application-dev.yml 开发配置文件
application-prod.yml 生产配置文件
application-test.yml 测试配置文件
(1)主配置文件:配置激活选项
(2)其他配置文件:指定属于哪个环境(同yml,只不过表现形式是 key=value 的,三个配置文件分别是: application-dev.properties , application-prod.properties , application-test.properties )
无论是使用上述 多文档块 的方式,还是新建 application-test.yml 文件,都可以在配置文件中指定 spring.profiles.active=test 激活指定的profile。
感谢阅读小生文章。祝大家早日富可敌国,实现财富自由。 写文不易 ,一定要 点赞、评论、收藏哦 , 感谢感谢感谢!!!
Ⅵ SpringBoot使用配置类映射yml配置文件信息
使用configurationProperties注解并指明在配置文件中的前缀,然后用component注解注册进ioc容器。 我这里定义的两个静态内部类,同时创建了各自的实例,比如这个Email静态内部类中有三个属性,那么配置文件就可以是mq.myrabbit.email.queue来对静态内部类中的属性进行一个映射 在yml中写配置 项目编译后,在yml中写配置会自动显示出来自己定义的配置映射类所具有的属性,如下图所示: 然后在yml配置文件中,写各个配置,配置类就会读取到了
Ⅶ Spring加载配置文件(org.springframework.beans.factory.BeanDefinitionStoreException)
1、首先手动加载Spring配置文件有两个类,分别是;两个类的区别。