我有一个spring启动应用程序
@SpringBootApplication
public class TaxApplication {
private static final Logger log = LoggerFactory.getLogger(TaxApplication.class);
public static void main(String[] args) {
SpringApplication.run(TaxApplication.class, args);
}
}
我已经用springjpa设置了数据访问
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=none
spring.jpa.hibernate.show-sql=true
我已经为account表设置了一个jpa存储库:
public interface AccountRepository extends JpaRepository<Account, Long> {
List<Account> findByNameStartsWithIgnoreCase(String name);
}
在我看来 AccountRepository
不明白 @Autowired
通过Spring框架,
我可以通过构造函数注入获得它的一个示例:
public MainView(AccountRepository accountRepository) {
}
但是如果我尝试使用自动连接,构造函数输出'null'
@Route
@Configurable
@PageTitle("Basic App Layout")
@CssImport(value = "combobox-styles.css", themeFor="vaadin-combo-box-overlay")
public class MainView extends AppLayout {
@Autowired
AccountRepository accountRepository;
public MainView() {
System.out.println(accountRepository);
}
}
这是因为代码是从mainview构造函数调用的吗?如何将自动连线的jpa bean与vaadin一起使用?
编辑:我已经在应用程序中添加了@enablejparepositories,但是自动布线仍然失败
@SpringBootApplication
@EnableJpaRepositories(basePackages= {"org.mypackage.tax.repo"})
public class TaxApplication {
3条答案
按热度按时间a9wyjsp71#
这就是spring中自动布线的工作原理。
在使用构造函数注入时,可以省略
@Autowired
注解,只要只有一个构造函数,但它仍然是自动连接的。当您使用字段或设置器时,依赖项将在bean构造之后被注入。这与瓦丁无关。
构造注入通常优于现场注入。它使类更易于测试,因为当您自己示例化它时,可以很容易地将mock或stub传递给构造函数。
42fyovps2#
你可以尝试添加
@EnableJpaRepositories
对您的TaxApplication
班vcirk6k63#
将此添加到应用程序: