我正在嘗試Serialize
我的@Service
用於將@SessionAttribute
添加到我的@Controller
。我的Spring MVC自動裝配代碼和@SessionAttribute有什麼問題?
現在的問題有@Autowired
@Repository
是Service
類中加載的repositoy並Deserializing
服務對象後不會加載。儘管我已經使用SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
但沒有解決。
package jas;
@Configuration
@SpringBootApplication
@ComponentScan
public class BackofficeApplication {
public static void main(String[] args) {
SpringApplication.run(BackofficeApplication.class, args);
}
}
控制器
package jas.controllers;
@Controller
@SessionAttributes({"permissionsForm"})
public class PermissionsController {
@Autowired
@Qualifier("permissionValidator")
private Validator validator;
@Autowired
private Permissions permissionsAdd;
@InitBinder
private void initBinber(WebDataBinder binder){
binder.setValidator(validator);
}
@ModelAttribute("viewTemplate")
public String createviewTemplate(){
return "permissions-add";
}
@ModelAttribute("permissionsForm")
public Permissions permissionsAdd(){
return permissionsAdd;
}
@RequestMapping(value = "/permissions:add", method=RequestMethod.GET)
private String addGet(Model model) {
return "welcome";
}
}
服務
package jas.beans.services;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import jas.beans.Role;
import jas.beans.repo.PermissionsRepository;
@Component
public class Permissions implements Serializable{
/**
*
*/
private static final long serialVersionUID = -495480557873675142L;
@Autowired
private static PermissionsRepository repository;
// Form
private HashMap form = new HashMap();
public Permissions(){
}
public PermissionsRepository getRepository(){
if(this.repository == null){
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}
return this.repository;
}
public Iterable<Role> getAll(){
return this.getRepository().findAll();
}
}
庫
package jas.beans.repo;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import jas.beans.Role;
@Component
public interface PermissionsRepository extends CrudRepository<Role, Long>{
@Query("SELECT r FROM Role r WHERE r.username = ?1")
Role findbyUsername(String username);
}
你爲什麼要在會話中存儲@Service? –
@AlanHay嗨,只是我想'清除'的網絡形式,'服務'已被分配給它使用'@ ModelAttribute',所以當我閱讀時,我必須使用'SessionAttribute'除了'SesstionStatus'以將其設置爲完成會話以將modelattribute設置爲清除,因此表單在提交後不會再存儲數據,請更正我的問題? – Jason4Ever