【备忘录】记录了在Spring Boot中遇到的困难或其他事项
我之前一直使用基于Struts的Terasoluna Java框架,但这次我尝试使用了Spring Boot。所以,我会在这里记录一些遇到的问题和需要备忘的内容。
研发环境
-
- Windows7 / Windows10
-
- Eclipse pleiades 4.7
-
- Spring Boot 1.5.7
- JDK8
春天的关系
若包装结构不良,则在启动时会出现错误。
@SpringBootApplication
public class DemoApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
private final CityDao cityDao;
private final HotelMapper hotelMapper;
public DemoApplication(CityDao cityDao, HotelMapper hotelMapper) {
this.cityDao = cityDao;
this.hotelMapper = hotelMapper;
}
@Override
public void run(String... args) throws Exception {
System.out.println(this.cityDao.selectCityById(1));
System.out.println(this.hotelMapper.selectByCityId(1));
}
}
@Component
public class CityDao {
private final SqlSession sqlSession;
public CityDao(SqlSession sqlSession) {
this.sqlSession = sqlSession;
}
public City selectCityById(long id) {
return this.sqlSession.selectOne("selectCityById", id);
}
}
Description:
Parameter 0 of constructor in hoge.DemoApplication required a bean of type 'sample.mybatis.dao.CityDao' that could not be found.
Action:
Consider defining a bean of type 'sample.mybatis.dao.CityDao' in your configuration.
当我将 DemoApplication 的包从 hoge 移动到 sample(与 CityDao 的包相同)时,成功启动了。
@AutoConfigureTestDatabase包的类.
在Spring Boot 1.5.7版本中,@AutoConfigureTestDatabase注解有两个不同的包。请使用较新的那个包。
-
- (古)org.springframework.boot.test.autoconfigure.orm.jpa
(新)org.springframework.boot.test.autoconfigure.jdbc
Spring Boot 1.5的主要变化 参考
MyBatis相关
当实际使用的数据库进行测试时,可以使用@AutoConfigureTestDatabase。
@RunWith(SpringRunner.class)
@MybatisTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@Import(CityDao.class)
public class CityDaoTest {
@Autowired
private CityDao cityDao;
@Test
public void test() {
City city = cityDao.selectCityById(1);
//比較
fail("まだ実装されていません");
}
}
如果你喜欢针对真实数据库运行测试,你可以使用@AutoConfigureTestDatabase,但是内存嵌入式数据库通常在测试中表现良好,因为它们速度快,不需要任何开发者安装。
使用一个真实的数据库
AutoConfigureTestDatabase.Replace.NONE意味着“不要替换应用程序的默认数据源”。
如果要使用@Autowired来使用DAO类,请使用@Import。
代码请参考上述内容。
能够将下划线分隔的字符串转换为驼峰命名法。
<setting name="mapUnderscoreToCamelCase" value="true" />
切换是否启用将数据库中类似于 A_COLUMN 带下划线的列自动映射为驼峰式的 Java 属性 aColumn 的功能。
Thymeleaf相关
没有闭合标签会导致错误。
启用自动重新加载功能的方法
使用 Spring 开发工具。
关于Spring Boot Devtools的自动重启功能
- Thymeleafをブラウザのリロードで更新する方法(キャッシュオフ)
spring.thymeleaf.cache=false
以下是对这个网址的中文本地化的一种说法:
https://qiita.com/uzresk/items/31a4585f7828c4a9334f
环境关系
无法加载Maven仓库
在构建时,发生了以下错误。
Archive for required library: '.../.m2/repository/.../*.jar' in project '<プロジェクト名>' cannot be read or is not a valid ZIP file <プロジェクト名> ビルド・パス ビルド・パスの問題
ビルド・パスのエラーが解決されるまで、プロジェクトをビルドできません
删除仓库后,问题得到解决。
对Eclipsen的控制台日志进行着色处理。
-
- 在Eclipse中安装插件选择帮助->安装新软件…然后点击 “添加…” 来添加以下URL:
-
- http://www.mihai-nita.net/eclipse
在application.properties中启用“ANSI Color Code”。
spring.output.ansi.enabled=ALWAYS
https://mihai-nita.net/2013/06/03/eclipse-plugin-ansi-in-console/
https://mihai-nita.net/2013/06/03/eclipse-plugin-ansi-in-console/ 上提供了一个关于在Eclipse中使用ANSI插件的文章。
http://www.logicbig.com/tutorials/spring-framework/spring-boot/color-logs/
http://www.logicbig.com/tutorials/spring-framework/spring-boot/color-logs/是一个关于如何在Spring Boot中实现彩色日志的教程。
更改启动时的横幅,关闭
将banner.txt文件放置在src/main/resources/中,可以更改启动时的横幅。
通过描述以下设置,可以将横幅禁用。
spring.main.banner-mode=off
更改Spring Boot启动横幅的方法可以在此链接文档中找到:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-spring-application.html