从java web转学spring boot,记录一下遇到的坑
一、用@Value读取Application.properties文件里的字符:
1、基本用法示例:先在Application.properties文件里写classname=net.ucanaccess.jdbc.UcanaccessDriver,在.java文件里读取@Value("${classname}") private String classname;
2、如果字符含有中文,必须将Application.properties文件变成UTF-8编码。如果是一串含有中文字符串的路径字符串,不可以写在Application.properties文件里,读出来仍然是乱码。
3、如果要创建一个含有@Value属性的类的实例,不可以用new的方式,而应该用“@Autowired 类名 实例名;”这样的方式。
二、XXXApplication.java这个文件必须和Controller所在的文件夹位于同一个文件夹内。
三、每次在pom.xml文件里添加新的dependency后,必须update maven。如下图所示。更新时必须联网,需要下载相关的依赖包。
四、导出项目成war文件:
1、修改pom.xml的packaging为war。即添加一行:<packaging>war</packaging>
2、在pom中添加插件,如下代码,添加后要注意更新maven:
1 <build> 2 <plugins> 3 <plugin> 4 <groupId>org.springframework.boot</groupId> 5 <artifactId>spring-boot-maven-plugin</artifactId> 6 </plugin> 7 <plugin> 8 <groupId>org.apache.maven.plugins</groupId> 9 <artifactId>maven-war-plugin</artifactId> 10 </plugin> 11 </plugins> 12 </build>
3、启动类XXXApplication.java改成继承SpringBootServletInitializer,同时改写重写configure方法,如下示例:
@SpringBootApplication public class MyspringApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MyspringApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MyspringApplication.class); } }
4、打开项目的根目录,按住shift键点击鼠标右键,选择菜单“在此处打开命令窗口”,然后在命令窗口里输入mvn package命令,此时必须确保网络畅通。
五、实现热部署,添加一个依赖即可,如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <scope>true</scope> </dependency>
六、Restful风格的网址传参方式,如下例:
@Controller public class Drawings { @RequestMapping(value={"/drawings/{no}/{type}","/drawings/{no}"}) @ResponseBody public String test(@PathVariable String no,@PathVariable (required = false) String type) { if (type==null){ type="" ; } return no+type; } }
记录初学Spring boot(使用@Value、启动类Application.java的位置、更新maven、导出成war文件、热部署、Restful风格网址传参)