下載地址:點擊前往html
注意:須要下載專業版本的,註冊碼在網上隨便搜一個就行啦java
下載地址:點擊前往mysql
到官網下載的maven是綠色版的,無需安裝,解壓便可git
<localRepository>D://PTool/maven/apache-maven-3.5.0/conf/bdck</localRepository>web
<mirror> <id>aliyun</id> <name>aliyun Maven</name> <mirrorOf>*</mirrorOf> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror>
注意:這兩個配置都只須要在setting.xml中設置就能夠啦redis
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <!-- 4 Licensed to the Apache Software Foundation (ASF) under one 5 or more contributor license agreements. See the NOTICE file 6 distributed with this work for additional information 7 regarding copyright ownership. The ASF licenses this file 8 to you under the Apache License, Version 2.0 (the 9 "License"); you may not use this file except in compliance 10 with the License. You may obtain a copy of the License at 11 12 http://www.apache.org/licenses/LICENSE-2.0 13 14 Unless required by applicable law or agreed to in writing, 15 software distributed under the License is distributed on an 16 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 KIND, either express or implied. See the License for the 18 specific language governing permissions and limitations 19 under the License. 20 --> 21 22 <!-- 23 | This is the configuration file for Maven. It can be specified at two levels: 24 | 25 | 1. User Level. This settings.xml file provides configuration for a single user, 26 | and is normally provided in ${user.home}/.m2/settings.xml. 27 | 28 | NOTE: This location can be overridden with the CLI option: 29 | 30 | -s /path/to/user/settings.xml 31 | 32 | 2. Global Level. This settings.xml file provides configuration for all Maven 33 | users on a machine (assuming they're all using the same Maven 34 | installation). It's normally provided in 35 | ${maven.home}/conf/settings.xml. 36 | 37 | NOTE: This location can be overridden with the CLI option: 38 | 39 | -gs /path/to/global/settings.xml 40 | 41 | The sections in this sample file are intended to give you a running start at 42 | getting the most out of your Maven installation. Where appropriate, the default 43 | values (values used when the setting is not specified) are provided. 44 | 45 |--> 46 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 47 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 48 xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> 49 <!-- localRepository 50 | The path to the local repository maven will use to store artifacts. 51 | 52 | Default: ${user.home}/.m2/repository 53 <localRepository>/path/to/local/repo</localRepository> 54 --> 55 <localRepository>D://PTool/maven/apache-maven-3.5.0/conf/bdck</localRepository> 56 57 58 <!-- interactiveMode 59 | This will determine whether maven prompts you when it needs input. If set to false, 60 | maven will use a sensible default value, perhaps based on some other setting, for 61 | the parameter in question. 62 | 63 | Default: true 64 <interactiveMode>true</interactiveMode> 65 --> 66 67 <!-- offline 68 | Determines whether maven should attempt to connect to the network when executing a build. 69 | This will have an effect on artifact downloads, artifact deployment, and others. 70 | 71 | Default: false 72 <offline>false</offline> 73 --> 74 75 <!-- pluginGroups 76 | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e. 77 | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers 78 | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list. 79 |--> 80 <pluginGroups> 81 <!-- pluginGroup 82 | Specifies a further group identifier to use for plugin lookup. 83 <pluginGroup>com.your.plugins</pluginGroup> 84 --> 85 </pluginGroups> 86 87 <!-- proxies 88 | This is a list of proxies which can be used on this machine to connect to the network. 89 | Unless otherwise specified (by system property or command-line switch), the first proxy 90 | specification in this list marked as active will be used. 91 |--> 92 <proxies> 93 <!-- proxy 94 | Specification for one proxy, to be used in connecting to the network. 95 | 96 <proxy> 97 <id>optional</id> 98 <active>true</active> 99 <protocol>http</protocol> 100 <username>proxyuser</username> 101 <password>proxypass</password> 102 <host>proxy.host.net</host> 103 <port>80</port> 104 <nonProxyHosts>local.net|some.host.com</nonProxyHosts> 105 </proxy> 106 --> 107 </proxies> 108 109 <!-- servers 110 | This is a list of authentication profiles, keyed by the server-id used within the system. 111 | Authentication profiles can be used whenever maven must make a connection to a remote server. 112 |--> 113 <servers> 114 <!-- server 115 | Specifies the authentication information to use when connecting to a particular server, identified by 116 | a unique name within the system (referred to by the 'id' attribute below). 117 | 118 | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are 119 | used together. 120 | 121 <server> 122 <id>deploymentRepo</id> 123 <username>repouser</username> 124 <password>repopwd</password> 125 </server> 126 --> 127 128 <!-- Another sample, using keys to authenticate. 129 <server> 130 <id>siteServer</id> 131 <privateKey>/path/to/private/key</privateKey> 132 <passphrase>optional; leave empty if not used.</passphrase> 133 </server> 134 --> 135 </servers> 136 137 <!-- mirrors 138 | This is a list of mirrors to be used in downloading artifacts from remote repositories. 139 | 140 | It works like this: a POM may declare a repository to use in resolving certain artifacts. 141 | However, this repository may have problems with heavy traffic at times, so people have mirrored 142 | it to several places. 143 | 144 | That repository definition will have a unique id, so we can create a mirror reference for that 145 | repository, to be used as an alternate download site. The mirror site will be the preferred 146 | server for that repository. 147 |--> 148 <mirrors> 149 <!-- mirror 150 | Specifies a repository mirror site to use instead of a given repository. The repository that 151 | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used 152 | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. 153 | 154 <mirror> 155 <id>mirrorId</id> 156 <mirrorOf>repositoryId</mirrorOf> 157 <name>Human Readable Name for this Mirror.</name> 158 <url>http://my.repository.com/repo/path</url> 159 </mirror> 160 --> 161 <mirror> 162 <id>aliyun</id> 163 <name>aliyun Maven</name> 164 <mirrorOf>*</mirrorOf> 165 <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 166 </mirror> 167 </mirrors> 168 169 <!-- profiles 170 | This is a list of profiles which can be activated in a variety of ways, and which can modify 171 | the build process. Profiles provided in the settings.xml are intended to provide local machine- 172 | specific paths and repository locations which allow the build to work in the local environment. 173 | 174 | For example, if you have an integration testing plugin - like cactus - that needs to know where 175 | your Tomcat instance is installed, you can provide a variable here such that the variable is 176 | dereferenced during the build process to configure the cactus plugin. 177 | 178 | As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles 179 | section of this document (settings.xml) - will be discussed later. Another way essentially 180 | relies on the detection of a system property, either matching a particular value for the property, 181 | or merely testing its existence. Profiles can also be activated by JDK version prefix, where a 182 | value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'. 183 | Finally, the list of active profiles can be specified directly from the command line. 184 | 185 | NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact 186 | repositories, plugin repositories, and free-form properties to be used as configuration 187 | variables for plugins in the POM. 188 | 189 |--> 190 <profiles> 191 <!-- profile 192 | Specifies a set of introductions to the build process, to be activated using one or more of the 193 | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/> 194 | or the command line, profiles have to have an ID that is unique. 195 | 196 | An encouraged best practice for profile identification is to use a consistent naming convention 197 | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc. 198 | This will make it more intuitive to understand what the set of introduced profiles is attempting 199 | to accomplish, particularly when you only have a list of profile id's for debug. 200 | 201 | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo. 202 <profile> 203 <id>jdk-1.4</id> 204 205 <activation> 206 <jdk>1.4</jdk> 207 </activation> 208 209 <repositories> 210 <repository> 211 <id>jdk14</id> 212 <name>Repository for JDK 1.4 builds</name> 213 <url>http://www.myhost.com/maven/jdk14</url> 214 <layout>default</layout> 215 <snapshotPolicy>always</snapshotPolicy> 216 </repository> 217 </repositories> 218 </profile> 219 --> 220 221 <!-- 222 | Here is another profile, activated by the system property 'target-env' with a value of 'dev', 223 | which provides a specific path to the Tomcat instance. To use this, your plugin configuration 224 | might hypothetically look like: 225 | 226 | ... 227 | <plugin> 228 | <groupId>org.myco.myplugins</groupId> 229 | <artifactId>myplugin</artifactId> 230 | 231 | <configuration> 232 | <tomcatLocation>${tomcatPath}</tomcatLocation> 233 | </configuration> 234 | </plugin> 235 | ... 236 | 237 | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to 238 | anything, you could just leave off the <value/> inside the activation-property. 239 | 240 <profile> 241 <id>env-dev</id> 242 243 <activation> 244 <property> 245 <name>target-env</name> 246 <value>dev</value> 247 </property> 248 </activation> 249 250 <properties> 251 <tomcatPath>/path/to/tomcat/instance</tomcatPath> 252 </properties> 253 </profile> 254 --> 255 </profiles> 256 257 <!-- activeProfiles 258 | List of profiles that are active for all builds. 259 | 260 <activeProfiles> 261 <activeProfile>alwaysActiveProfile</activeProfile> 262 <activeProfile>anotherAlwaysActiveProfile</activeProfile> 263 </activeProfiles> 264 --> 265 </settings>
2.3.3 配置maven的環境變量spring
注意:配置maven的環境變量前請配置好Java的環境變量sql
配置完環境變量後再dos窗口中執行:mvn -v 查看版本數據庫
配置信息看圖便可express
注意:會自動生成一個包含main函數的應用入口類
package cn.xinagxu.girl02; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Girl02Application { public static void main(String[] args) { SpringApplication.run(Girl02Application.class, args); } }
注意:建立好的springboot項目的pom.xml文件已經自動引入了兩個依賴和一個插件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.xinagxu</groupId> <artifactId>girl02</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>girl02</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.8.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
福利:SpringBoot項目腳手架 -> 點擊前往
該腳手架包含的東西
》開發熱部署
》日誌文件配置;注意:日誌文件配置在static中的logback-spring.xml,若是要使用將這個配置文件移動到resources目錄下後進入該配置文件修改日誌存放路徑便可使用
》多環境配置;注意:默認使用的是開發環境
》數據庫配置;注意:使用的mysql數據庫
編寫一個controller類,當前段請求爲 http://127.0.0.1:8080/ 時以JSON格式放回 Hello World!
package cn.xinagxu.girl02.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @RequestMapping(value = "/") public String hello() { return "Hello World!"; } }
注意:@RestController = @Controller + @ResponseBody
進入到項目的根目錄後執行
mnv spring-boot:run
進入到醒目根目錄
執行 mvn install 編譯項目
再去到 target 目錄下 cd target
注意:target目錄存放的都是編譯事後的文件
再利用 java -jar 項目名.jar
properties yml
配置上下文路徑爲 /girl02
配置端口爲:8888
server.context-path=/girl02
server.port=8888
server:
context-path: /girl
port: 9999
注意:yml的配置時冒號後面必須加一個空格;推薦使用yml格式的配置方式
在配置文件中配置變量以及變量值
在須要用到的地方引入這個屬性,相似於從容器中引入對象同樣
package cn.xinagxu.girl02.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; @RestController @Controller @ResponseBody public class HelloController { @Value("${character}") private String character; @Value("${age}") private Integer age; @Value("${content}") private String content; @RequestMapping(value = "/") public String hello() { return "Hello World!" + "性格:" + character + " 年齡:" + age + " 詳細信息爲:" + content; } }
編寫一個實體類
package cn.xinagxu.girl02.entity; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "student") public class Student { private Integer id; private String name; private Integer age; public Student() { } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Student{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } }
在配置文件中配置實體類的屬性值
相似於給一個實體bean賦值
在用到的地方引入這個實體類
package cn.xinagxu.girl02.controller; import cn.xinagxu.girl02.entity.Student; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; @RestController @Controller @ResponseBody public class HelloController { @Value("${character}") private String character; @Value("${age}") private Integer age; @Value("${content}") private String content; @Autowired private Student student; @RequestMapping(value = "/") public String hello() { // return "Hello World!" + "性格:" + character + " 年齡:" + age + " 詳細信息爲:" + content; return student.toString(); } }
獲取方式不變,可是若是使用new去建立工具實例,那麼工具類中就不會獲取到相關的配置文件信息;必須將配置類被容器管理,而後在須要使用配置類的地方依賴注入便可;不然讀取到的配置信息所有都是null;參考博文
package cn.xiangxu.redis_demo.common.uitls; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import redis.clients.jedis.Jedis; /** * @author 王楊帥 * @create 2018-06-25 13:35 * @desc jedis客戶端工具類 **/ @Component public class JedisClientUtil { @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private Integer port; private final byte[] temp_lock = new byte[1]; private Jedis jedis; public JedisClientUtil(){} public Jedis getRedisClient() { if (jedis == null) { synchronized (temp_lock) { if (jedis == null) { System.out.println(host); System.out.println(port); jedis = new Jedis(host,port); } } } return jedis; } }
package cn.xiangxu.redis_demo.web; import cn.xiangxu.redis_demo.common.uitls.JedisClientUtil; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * @author 王楊帥 * @create 2018-06-25 13:35 * @desc Redis相關 **/ @RestController @RequestMapping(value = "/redis") @Slf4j public class RedisController { /** * 單例模式 */ @Test public void test01() { // 01 獲取Jedis客戶端【設置IP和端口】 Jedis jedis = new Jedis("192.168.233.134", 6379); // 02 保存數據 jedis.set("name", "王楊帥"); // 03 獲取數據 String value = jedis.get("name"); System.out.println("獲取到的數據爲:" + value); String age = jedis.get("age"); System.out.println("獲取到的年齡信息爲:" + age); // 04 釋放資源 jedis.close(); } /** * 使用鏈接池模式 */ @Test public void test02() { System.out.println("Hello Warrior"); // 01 獲取鏈接池對象 JedisPoolConfig config = new JedisPoolConfig(); // 0101 最大鏈接數 config.setMaxTotal(30); // 0102 最大空閒鏈接數 config.setMaxIdle(10); // 02 獲取鏈接池 JedisPool jedisPool = new JedisPool(config, "192.168.233.134", 6379); // 03 核心對象【獲取Jedis客戶端對象】 Jedis jedis = null; try { // 0301 經過鏈接池獲取Jedis客戶端 jedis = jedisPool.getResource(); // 0302 設置數據 jedis.set("name", "三少"); // 0303 獲取數據 String value = jedis.get("name"); System.out.println(value); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally { if (jedis != null) { jedis.close(); } if (jedisPool != null) { jedisPool.close(); } } } @Autowired private JedisClientUtil jedisClientUtil; @GetMapping(value = "/connect") public void connect() { // JedisClientUtil jedisClientUtil = new JedisClientUtil(); Jedis jedis = jedisClientUtil.getRedisClient(); } }
注意:前面兩個配置文件中配置的東西是公用的,後面兩個中一個是開發環境,一個是生產環境
#server: # context-path: /girl # port: 9999 spring: profiles: active: prod character: 外向 age: 24 content: "性格:${character}, 年齡:${age}" student: id: 1 age: 24 naem: 三少
server: context-path: /girl port: 9999
server: context-path: /girl port: 8888
在IntelliJ IDEA中啓動主配置中指定的那個環境
利用maven啓動項目,並指定運行環境
java -jar 項目名.jar --spring.profiles.active=prod
注意:運行前須要編譯項目而後進入到target文件夾中
在properties配置文件中配置一個自定義配置,例如
xiangxu.security.browser.loginPage = /demo-signIn.html
該對象是用來保存properties配置文件中以 xiangxu.security開始的全部配置信息
技巧01:須要在該實體類上標註 @ConfigurationProperties(prefix = "xiangxu.security") 註解來聲明該實體類是用來保存properties配置文件中以 xiangxu.security開始的全部配置信息
技巧02:該對象中有一個名爲browser的實體屬性,該屬性是用來存放在properties文件中以browser開始的配置信息
技巧03:在properties文件中xiangxu.security的配置信息屬性名必須和SecurityProperty對象的實例屬性名保持一致
技巧04:若是給實體類的屬性設定了默認值後,若是在配置文件中沒有對應的配置就會使用屬性對應的默認值做爲默認配置
package com.example.wiremock.entity.properties; import org.springframework.boot.context.properties.ConfigurationProperties; /** * @author 王楊帥 * @create 2018-05-13 13:45 * @desc **/ @ConfigurationProperties(prefix = "xiangxu.security") public class SecurityProperty { private BrowserProperty browser; public BrowserProperty getBrowser() { return browser; } public void setBrowser(BrowserProperty browser) { this.browser = browser; } }
該對象是用來存放propertes文件中browser開始的配置信息
技巧01:properties配置文件中browser後面的屬性名必須和實體類BrowserProperty的實例屬性名一致
package com.example.wiremock.entity.properties; /** * @author 王楊帥 * @create 2018-05-13 13:46 * @desc **/ public class BrowserProperty { private String loginPage; public String getLoginPage() { return loginPage; } public void setLoginPage(String loginPage) { this.loginPage = loginPage; } }
建立一個配置類,來讓咱們定義的實體類和properties配置文件中的配置信息對應起來;這樣咱們只須要依賴注入咱們建立的實體類SecurityProperty就能夠讀取到properties中的配置信息了
package com.example.wiremock.config; import com.example.wiremock.entity.properties.SecurityProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Configuration; @Configuration @EnableConfigurationProperties(SecurityProperty.class) public class PropertiesConfig { }
項目啓動後依賴注入配置實體類後,就能夠經過依賴注入的對象去獲取到對應的propertes配置信息
package com.example.wiremock.controller; import com.example.wiremock.entity.properties.SecurityProperty; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.builder.ReflectionToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; /** * @author 王楊帥 * @create 2018-05-13 14:15 * @desc **/ @RunWith(SpringRunner.class) @SpringBootTest @Slf4j public class PropertiesTest { // 01 依賴注入配置實體類 @Autowired private SecurityProperty securityProperty; @Test public void test01() { log.info(ReflectionToStringBuilder.toString(securityProperty, ToStringStyle.MULTI_LINE_STYLE)); log.info(securityProperty.getBrowser().getLoginPage()); } }
·下面是個人公衆號二維碼,歡迎關注·
尋渝記
微信號:xyj_fury