Есть класс @Entity ResultCode, далее есть интерфейс который extends CrudRepository, в классе контроллера я могу пользоваться resultCodeRepository интерфейсом, но в других классах появляется NullPointerException. Как решить проблему?
Класс POJO
@Entity(name="result_codes")
public class ResultCode implements Serializable {
@Id
@SequenceGenerator(name = "sequence_rescode", sequenceName = "rescode_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequence_rescode")
private Integer result_id;
@Column(name="result_code",unique = true)
private String resultCode;
@Column(name="result_descr")
private String resultDescr;
Класс Repository
@Repository
public interface ResultCodeRepository extends CrudRepository<ResultCode, Integer> {
Optional<ResultCode> getResultCodeByResultCode(String string);
}
Класс Controller где работает..
@Controller
@RequestMapping(path="/index")
public class IndexController {
@Autowired
private ResultCodeRepository resultCodeRepository;
@GetMapping(path="/all")
public @ResponseBody Iterable<ResultCode> getAllUsers() {
return resultCodeRepository.findAll();
}
}
Класс где не работает
@Component
public class Test {
private ResultCodeRepository resultCodeRepository;
@Autowired
public void setResultCodeRepository(ResultCodeRepository resultCodeRepository){
this.resultCodeRepository = resultCodeRepository;
}
public void persistAll(){
resultCodeRepository.save(new ResultCode("90","Все хорошо"));
System.out.println("rescode has been saved");
}
}
Класс main
@SpringBootApplication
public class Application {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
SpringApplication.run(Application.class, args);
Test test = new Test();
test.persistAll();
}
}
Так делать нельзя. Если вы создаете экземпляр класса через new, то контейнер спринга ничего о нем не знает, соответственно, не может инжектить в него бины. Вы выходите за пределы контексте спринга, поэтому и все, что вы пытаетесь проинжектить не инициализируется, соответсвенно, вы получаете данное исключение. Если Вам нужно прямо из главного класса проинжектить бин и вызвать у него метод, то можно сделать так:
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public CommandLineRunner init(Test test) {
return (args) -> {
test.persistAll()
};
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть ли в Java точные типы? Потому что как мы знаем в float/double происходит потеря точности и деньги в таких типах хранить не стоит
Суть задачи- получить с сервера json и вывести его в listbox вот DTO
Есть ли какой-нибудь способ встроить в своё приложение вход, отправку и получение сообщений от Whatsapp?