- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试学习这个 spring-lemon 入门教程 ( https://naturalprogrammer.gitbooks.io/spring-lemon-getting-started/content/index.html ),但我无法在某个时刻继续学习。我创建了一个新的 spring starter 项目(Spring boot),并且能够向其中添加 spring lemon。我只是按照说明进行操作,但是当我开始构建 maven 时,测试失败并出现以下错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lmnDemoController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.naturalprogrammer.spring.lemon.LemonController.setLemonService(com.naturalprogrammer.spring.lemon.LemonService); nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'lmnDemoService': Bean with name 'lmnDemoService' has been injected into other beans [authenticationSuccessHandler] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.
我的 LmnDemoService.java
是:
package com.example;
import org.springframework.stereotype.Service;
import com.naturalprogrammer.spring.lemon.LemonService;
@Service
public class LmnDemoService extends LemonService<User, Long> {
@Override
protected User newUser() {
return new User();
}
}
除了教程所说的行,它没有别的。我错过了什么?
编辑:
LmndemoApplication.java
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.naturalprogrammer.spring.lemon.LemonConfig;
@SpringBootApplication(scanBasePackageClasses = {LmndemoApplication.class, LemonConfig.class})
public class LmndemoApplication {
public static void main(String[] args) {
SpringApplication.run(LmndemoApplication.class, args);
}
}
LmnDemoController.java
package com.example;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.naturalprogrammer.spring.lemon.LemonController;
@RestController
@RequestMapping("/api/core")
public class LmnDemoController extends LemonController<User, Long> {
}
LmnDemoService.java
package com.example;
import org.springframework.stereotype.Service;
import com.naturalprogrammer.spring.lemon.LemonService;
@Service
public class LmnDemoService extends LemonService<User, Long> {
@Override
protected User newUser() {
return new User();
}
}
SecurityConfig.java
package com.example;
import org.springframework.context.annotation.Configuration;
import com.naturalprogrammer.spring.lemon.security.LemonSecurityConfig;
@Configuration
public class SecurityConfig extends LemonSecurityConfig {
}
ServletInitializer.java
package com.example;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(LmndemoApplication.class);
}
}
用户.java
package com.example;
import javax.persistence.Entity;
import javax.persistence.Table;
import com.naturalprogrammer.spring.lemon.domain.AbstractUser;
@Entity
@Table(name="usr")
public class User extends AbstractUser<User,Long> {
private static final long serialVersionUID = 2716710947175132319L;
}
UserRepository.java
package com.example;
import com.naturalprogrammer.spring.lemon.domain.AbstractUserRepository;
public interface UserRepository extends AbstractUserRepository<User, Long> {
}
application.properties
#Database configuration
spring.jpa.database: MYSQL
spring.jpa.hibernate.ddl-auto: update
spring.datasource.url: jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username: myuser
spring.datasource.password: mypassword
#DevTools configuration
spring.devtools.livereload.enabled: false
spring.devtools.restart.enabled: false
#Application URL
#lemon.application-url: http://localhost:9000
#reCAPTCHA configuration
#lemon.recaptcha.sitekey: your google recaptcha site key
#lemon.recaptcha.secretkey: your google recaptcha secret key
#Remember me configuration
#lemon.remember-me-key: someSecret
#First administrator
lemon.admin.username: admin@example.com
lemon.admin.password: admin
#Email configuration
#spring.mail.host = smtp.gmail.com
#spring.mail.username = xxxxxx@gmail.com
#spring.mail.password = xxxxxx
#
#spring.mail.properties.mail.smtp.auth = true
#spring.mail.properties.mail.smtp.socketFactory.port = 465
#spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory
#spring.mail.properties.mail.smtp.socketFactory.fallback = false
#spring.mail.properties.mail.smtp.ssl.enable = true
#Handling cross origin requests configuration
#lemon.cors.allowed-origins: http://localhost:9000
#This will disable the protection against JSON vulnerability
#lemon.enabled.json-prefix: false
pom.xml
http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>lmndemo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Spring-lemon -->
<dependency>
<groupId>com.naturalprogrammer.spring</groupId>
<artifactId>spring-lemon</artifactId>
<version>0.8.5</version><!-- See https://github.com/naturalprogrammer/spring-lemon/releases for latest release -->
</dependency>
</dependencies>
<build>
<finalName>lmndemo</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
最佳答案
在我看来像是一个循环引用问题。它没有发生在我的环境中,我认为理想情况下 Spring 应该能够自行解决它,但我认为最好是修复 Spring Lemon 代码以使其更健壮。
那么,你能否尝试在 check out 的 Spring Lemon 代码中的 AuthenticationSuccessHandler
类的 setLemonService
方法上添加一个 @Lazy
注解你的工作区?使它看起来如下:
@Autowired
@Lazy // add this line
public void setLemonService(LemonService<?, ?> lemonService) {
this.lemonService = lemonService;
}
我之前没有尝试过@Lazy
,但我认为它应该可以。如果不是,我们将需要考虑另一种方法来打破循环依赖。
告诉我。找到解决方案后,我将检查 Spring Lemon 存储库的修复。
关于java - Spring 柠檬 BeanCurrentlyInCreationException : Error creating bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36990328/
假设有一个创建用户的操作。如果存在指定的电子邮件或用户名,此操作可能会失败。如果它失败了,则需要确切地知道原因。在我看来,有三种方法可以做到这一点,我想知道是否有明显的赢家。 所以,这是一个类用户:
var obj1 = Object.create; console.log(typeof obj1); var obj2 = Object.create(null); console.log(type
I am getting this error after running npm run build yield User.create({^在运行NPM Run Build Year Use
我应该为其他人将从中继承的第一个父对象传递哪个参数,哪个参数更有效 Object.create(Object.prototype) Object.create(Object) Object.creat
我正在尝试使用 JDBC(最新版本)设置 SQL Server 2008 数据库。 我有一个我想一起执行的 setup sql 命令列表: 基本上我做的是: connection.setAutoCom
我正在尝试创建一个 CloudFormation 模板来创建一个 Auto Scaling 组,以便我可以从中启动 2 个实例。 我已经创建了 Auto Scaling 组,但我不知道如何编写用于从
我正在创建我的第一个WordPress网站。我已经在我的网站上安装了Elementor Pro插件。随之而来的一个有利因素是“循环旋转木马”。。。当我把它添加到我的页面时,一切似乎都在工作,但是当我点
create-react-app error 我从终端运行yarn start时收到此错误消息...我尝试了sudo killall node和许多其他过程来清除i-node却没有成功。 我也将我的c
在 CRM 中,当我尝试设置工作流程时,我可以选择与某个实体的创建时间相关的超时。涉及三个字段。 记录创建于 创建于 修改时间 虽然最后一个很明显,但我看不出其他两个之间有任何逻辑上的区别。 最佳答案
我在一次采访中被问到这个问题。我无法回答。 "browserslist": [ ">0.2%", "not dead", "not ie <= 11", "not op_mini all" ] 我可以
这是一个 Rails 新手问题: 当我在模型上调用 create() 时,它会绕过关联的 Controller create 操作吗? 例如,这没有命中我的标签 Controller #create
我不明白这两种特权之间的区别。 我找到了这两种解释,但对我没有帮助。 CREATE TABLE -> Enables a user to create a table owned by that us
我是 SharePoint 工作流的新手。 创建新任务并分配 TaskId 时,我有两个选项: 创建一个新字段来保存 TaskId 创建一个新属性来保存 TaskId。 新属性是一个依赖属性。 我的问
我突然注意到我们的代码库中有一个TDataModuleTestExchange(nil)“构造函数调用”: procedure TDialoogConfigExchange.ButtonTestCli
我有一个具有 TComponent 变量的单元,我在单元初始化时创建此组件,如下所示: var XComp: TComponent; . . . . initialization begin
Composer 是否提供了更新项目创建时使用的包的方法?即,如果我使用以下内容创建一个新的 Laravel 项目 composer create-project --prefer-dist lara
在 Hibernate 中,如果我们将 hbm2ddl.auto 设置为 create/create-drop ,那么它将在启动时删除旧模式并创建新模式。这意味着,它也会删除数据?..我的疑问是,如果
我使用了 create an Automated Build 中的此链接 ( this guide ) . 浏览器错误控制台显示: https://hub.docker.com/v2/reposito
我已经搜索了 msdn 并没有找到答案。我应该知道有什么区别吗? 如果真的没有区别,那么为什么会存在这种冗余? --SQL Server Stored Procedure Syntax CREATE
我有以下内容: var CardViewModel = function (data) { ko.mapping.fromJS(data, {}, this); this.editin
我是一名优秀的程序员,十分优秀!