Я новичок в весенней загрузке.
Я создал свое веб-приложение, как показано ниже.
SampleApplication.java
@SpringBootApplication
public class SampleApplication implements CommandLineRunner {
@Autowired
DataSource dataSource;
@Autowired
private UserRepository userRepository;
Logger logger = LoggerFactory.getLogger(SampleApplication.class);
public static void main(String[] args) {
SpringApplication.run(SampleApplication.class, args);
}
@Transactional(readOnly = true)
@Override
public void run(String... args) throws Exception {
UserLoginController userLoginController = new UserLoginController();
System.out.println("DATASOURCE = " + dataSource);
logger.debug("\nUser: "+userRepository.findByName("user").getName());
logger.debug(userLoginController.getUserInfo("user","pword"));
}
}
UserRepository.java
@EnableJpaRepositories
@Repository
public interface UserRepository extends CrudRepository<User,Long> {
User findByName(String name);
}
User.java
@Entity
@Table(name="USER")
public class User
implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name="USER_ID_GENERATOR", sequenceName="USER_SEQ")
@GeneratedValue(strategy=GenerationType.AUTO, generator="USER_ID_GENERATOR")
private Long id;
@Column(name="NAME")
private String name;
@Column(name="PASSWORD")
private Long password;
public Long getId()
{
return this.id;
}
public void setId(Long id)
{
this.id = id;
}
public String getName()
{
return this.name;
}
public void setName(String name)
{
this.name = name;
}
public String getPassword()
{
return this.password;
}
public void setPassword(String password)
{
this.password = password;
}
UserLoginController.java
@Controller
public class UserLoginController {
Logger logger = LoggerFactory.getLogger(UserLoginController.class);
@RequestMapping(value = "/userLogin**", method = RequestMethod.POST)
public @ResponseBody String getUserInfo(@RequestParam("mobile") String uName, @RequestParam("pin") String pWord){
logger.debug("UserLoginController | uName: " + uName + " pWord: " + pWord);
UserLoginService userLoginService = new UserLoginService();
String user = null;
try {
logger.debug("UserLoginController | Validate user. uName: " + uName + " pWord: " + pWord);
user = userLoginService.validateSysUser(uName, pWord);
} catch (Exception e) {
logger.debug("UserLoginController | Validate user Exception: " + e.getMessage()+", "+e.getStackTrace());
}
if (user != null) {
logger.debug("UserLoginController | Returning aircash user");
return user;
} else {
logger.debug("UserLoginController | Returning NULL");
return null;
}
}
}
UserLoginService .java
public class UserLoginService {
Logger logger = LoggerFactory.getLogger(UserLoginService.class);
@Autowired
DataSource dataSource;
@Autowired
private UserRepository userRepository;
public String validateSysUser(String uName, String pWord) throws Exception{
logger.debug("UserLoginService | uName: "+uName+" pWord: "+pWord);
User user = new User();
String auser = userRepository.findByName(uName).getName();
if ((auser != null) && (validatePword(user.getPassword(),pWord)){
logger.debug("UserLoginService | User found: "+user.getName());
return auser;
}else {
logger.debug("UserLoginService | User not found");
return null;
}
}
public static boolean validatePword(String pWord,String pWord2){
return BCrypt.checkpw(pWord2,pWord);
}
}
Проблема в том, когда я запускаюapplication, эта часть дает мне ожидаемый ответ
logger.debug("\nUser: "+userRepository.findByName("user").getContactNo());
Но следующая строка вызывает исключение.Я также попытался вызвать диспетчер, используя почтальона тоже.Но возникает то же исключение.
logger.debug(userLoginController.getUserInfo("user","pword"));
Исключение выдается из класса UserLoginService.java .Сообщение об исключении отображается как null
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>robicash</groupId>
<artifactId>distributorcommision</artifactId>
<version>1.0</version>
<name>distributorcommission</name>
<description>commision for distributors</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mindrot</groupId>
<artifactId>jbcrypt</artifactId>
<version>0.3m</version>
</dependency>
<!--<dependency>-->
<!--<groupId>com.oracle</groupId>-->
<!--<artifactId>ojdbc8</artifactId>-->
<!--<version>11.2.0.4</version>-->
<!--</dependency>-->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Я не понимаю, почему один и тот же репозиторий дает два результата при вызове,
Подскажите, пожалуйста, как заставить его работать.