Controller和RestController的区别
Controller:标识一个Spring类是Spring MVC controller处理器,可以直接跳转到jsp、ftl、html等模板页面。在方法上加入responseBody注解,也可以返回实体对象
Restcontroller: 是Controller与ResponseBody的结合体,所有方法只能返回String、Object、Json等实体对象,不能跳转到模板页面(除非使用ModelAndView)
@RestController
public class UserController {
@RequestMapping(value = "/index",method = RequestMethod.GET)
public String toIndex(){
ModelAndView mv = new ModelAndView("index");
return mv;
}
}
spring注解@service(“service”)括号中的service有什么用
service 是有用的相当于 xml配置中得bean id = service 也可以不指定 不指定相当于 bean id = com. service.service 就是这个类的全限定名,表示给当前类命名一个别名,方便注入到其他需要用到的类中;不加的话,默认别名就是当前类名,但是首字母小写 。
@component
(把普通pojo实例化到spring容器中,相当于配置文件中的 <bean id="" class=""/>)
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类
下面写这个是引入component的扫描组件
<context:component-scan base-package=”com.mmnc”>
其中base-package为需要扫描的包(含所有子包)
1、@Service用于标注业务层组件
2、@Controller用于标注控制层组件(如struts中的action)
3、@Repository用于标注数据访问组件,即DAO组件.
4、@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Service public class UserServiceImpl implements UserService { }
@Repository public class UserDaoImpl implements UserDao { } getBean的默认名称是类名(头字母小写),如果想自定义,可以@Service(“***”) 这样来指定,这种bean默认是单例的,如果想改变,可以使用@Service(“beanName”)
@Scope(“prototype”)来改变。可以使用以下方式指定初始化方法和销毁方法(方法名任意): @PostConstruct public void init() { }
java的中断是一种协作机制。调用线程对象的interrupt方法并不一定就中断了正在运行的线程,它只是要求线程自己在合适的时机中断自己。每个线程都有一个boolean的中断状态(这个状态不在Thread的属性上),interrupt方法仅仅只是将该状态置为true。
interrupt() 中断线程,将会设置该线程的中断状态位,即设置为true
isInterrupted() 判断某个线程是否已被发送过中断请求
interrupted() 判断某个线程是否已被发送过中断请求,并且将中断状态重新置为false
中断分析
如果一个线程处于了阻塞状态(如线程调用了thread.sleep、thread.wait、I/O操作方法等进入阻塞状态),则在线程检查中断标示时如果发现中断标示为true,则会在这些阻塞方法(sleep、wait、I/O 操作方法)调用处抛出InterruptedException异常,并且在抛出异常后立即将线程的中断标示位清除,即重新设置为false。抛出异常是为了线程从阻塞状态醒过来,并在结束线程前让程序员有足够的时间来处理中断请求