Springメモ
3579 ワード
spring-一括異常処理 spring 4-汎型依存注入 スプリング4- Aync Restit Template
@Controller
public class BaseController {
protected final static Logger logger = LoggerFactory
.getLogger("controller");
@ResponseBody
@ExceptionHandler(Exception.class)
public RespBody exceptionHandler(Exception ex) {
return RespBody.error("exception", ex.getMessage());
}
}
もしControllerの中に@Exception Handler異常がなければ、親から検索します.スプリング4- @Reset Controller /** Bean */
public class User implements Serializable {
private Long id;
private String name;
}
public class Organization implements Serializable {
private Long id;
private String name;
}
/** Repository */
public abstract class BaseRepository<M extends Serializable> {
public void save(M m) {
System.out.println("=====repository save:" + m);
}
}
@Repository
public class UserRepository extends BaseRepository<User> {
}
@Repository
public class OrganizationRepository extends BaseRepository<Organization> {
}
/** Service */
public abstract class BaseService<M extends Serializable> {
@Autowired
protected BaseRepository<M> repository; // ,
public void save(M m) {
repository.save(m);
}
}
@Service
public class UserService extends BaseService<User> {
}
@Service
public class OrganizationService extends BaseService<Organization> {
}
/** Server */
@RestController
public class UserController {
private UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@RequestMapping("/api")
public Callable<User> api() {
System.out.println("=====hello");
return new Callable<User>() {
@Override
public User call() throws Exception {
Thread.sleep(10L * 1000); //
User user = new User();
user.setId(1L);
user.setName("haha");
return user;
}
};
}
}
/** Client */
public static void main(String[] args) {
AsyncRestTemplate template = new AsyncRestTemplate();
// ( )
ListenableFuture<ResponseEntity<User>> future = template.getForEntity("http://localhost:9080/spring4/api", User.class);
//
future.addCallback(new ListenableFutureCallback<ResponseEntity<User>>() {
@Override
public void onSuccess(ResponseEntity<User> result) {
System.out.println("======client get result : " + result.getBody());
}
@Override
public void onFailure(Throwable t) {
System.out.println("======client failure : " + t);
}
});
System.out.println("==no wait");
}
@Coditional