Ⅰ 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配置文件有兩個類,分別是;兩個類的區別。