【备忘录】记录了在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的控制台日志进行着色处理。

    1. 在Eclipse中安装插件选择帮助->安装新软件…然后点击 “添加…” 来添加以下URL:

 

    1. 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

不理解的事情(正在调查中)

application.properties和application.yml的区别是什么?

将应用程序部署到Tomcat的方法

广告
将在 10 秒后关闭
bannerAds