版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaTWO
專業技術大會
JavaAnnotation
李日貴(jini)AboutMejini@JWorld.TW(jakarta99)SoftLeaderTech.Corp.Presidentsince2002FocusondevinJavaenterprise
applicationsforInsurances,BankingandBetting.ResearchingandSharingJavaOpensourcesMyGoogle+(http://gplus.to/jakarta99)SinglenowAgendaIntroductionServlet3.0EJB3.1WebServicesCDIOpensourcesJavassist/ASM@Annotation
Course1
Introduction
What’sannotationBeginwith“@”AnInterfaceSetValues@Annotation@Annotation(“someValue”)@Annotation(var1=“someA”,var2=“someB”)@Annotation(value={“Apple”,“Banana”,“Cherry”})RetentionPolicy@AnnotationRuntimeDefaultvalueStereotypeFindtheclassescontain@AnnotationInitializethemaswhatyouwantTogeneratethecodesorxmlandetc..@Target(ElementType)@AnnoTarget(TYPE)publicclassTheTarget{ @AnnoTarget(FIELD)
privateStringglobalMsg; @AnnoTarget(CONSTRUCTOR)
publicTheTarget(){
//Thisisaconstructor
}
@AnnoTarget(METHOD)
publicvoidsomeMethod(@AnnoTarget(PARAMETER)
StringmyParam){ //Thisisamethod }}@Annotation
Course2
Servlet3.0
Servlet2.5packagejavatwo.annotation;publicclassCatServletextendsHttpServlet{ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{
//dosomething }}web.xml<web-app> <servlet> <servlet-name>CatServlet</servlet-name> <servlet-class>javatwo.annotation.CatServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CatServlet</servlet-name> <url-pattern>/cat</url-pattern> </servlet-mapping></web-app>Servlet3.0packagejavatwo.annotation;@WebServlet(“/cat”)publicclassCatServletextendsHttpServlet{ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//dosomething }}@WebServlet(name="catServlet",urlPatterns="/cat",
initParams={@WebInitParam(name="name",value="bobo")})Servlet3.0Noweb.xmlneeded@WebServlet -DefineaServlet@WebFilter
-DefineaFilter@WebListener -DefineaListener@WebInitParam -Defineinitparameter@MultipartConfig-DefineuploadpropertiesCanuseweb.xmltooverridevaluesthatspecifiedbytheAnnotations.FileUploadinServlet3.0@WebServlet(“/upload”)@MultipartConfig(location=“c:\\tmp”)publicclassFileUploadServletextendsHttpServlet{ publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ Collection<Part>parts=request.getParts(); for(Partpart:parts){
part.write(“upload.txt”);//savetoc:\tmp\upload.txt }}setAsyncinServlet3.0@WebServlet(name=“AsyncServlet”,urlPatterns=“/async”,asyncSupported=“true”)publicclassAsyncServletextendsHttpServlet{ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse){
AsyncContext
aCtx=request.startAsync(request,response);
ServletContextsc=request.getServletContext(); ((Queue<AsyncContext>)sc.getAttribute(“slowQueue")).add(aCtx); }}@WebListenerpublicclassSlowQueueListenerimplementsServletContextListener{ publicvoidcontextInitialized(ServletContextEvent
sce){…}}@Annotation
Course3
EJB3.1
EJB2.xpublicinterfaceCalculatorLocalextendsEJBLocalObject{..}publicinterfaceCalculatorLocalHomeextendsEJBLocalHome{..}publicclassCalculatorBeanimplementsSessionBean{..}ejb-jar.xml<ejb-jar> <enterprise-beans> <session> <ejb-name>calculator</ejb-name> <local-home>CalculatorLocalHome</local-home> <local>CalculatorLocal</local> <ejb-class>CalculatorBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans></ejb-jar>EJB3.0@LocalpublicinterfaceCalculatorLocal
extendsEJBLocalObject
{..}publicinterfaceCalculatorHomeextendsEJBHome{..}@StatelesspublicclassCalculatorBeanimplementsCalculatorLocal{..}ejb-jar.xmlEJB3.1(LocalBean)@LocalpublicinterfaceCalculatorLocalextendsEJBLocalObject{..}publicinterfaceCalculatorHomeextendsEJBHome{..}@StatelesspublicclassCalculatorBean
implementsCalculatorLocal{..}ejb-jar.xmlSingletonSessionBean@Singleton@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)publicclassSingletonBean{ privateint
clickCount=0;
@Lock(LockType.WRITE) publicint
getClickCount(){ returnclickCount++; }}//Thread-Safe,TransactionalScheduleTimer@SingletonpublicclassTransFileBean{
@Schedule(minute=“0”,hour=“4”,dayOfMonth=“Last”) publicvoidtrans(){ //dotransfer }}@Annotation
Course4
WebServicesWebServices“Big”WebServicesSOAPJAX-WSjavax.jws.*RESTful
WebServicesRESTJAX-RSjavax.ws.rs.*SOAPWebServiceimportjavax.jws.WebMethod;importjavax.jws.WebService;@WebService(serviceName=“helloService”)publicclassHello{
@WebMethod publicStringsayHello(Stringname){ return“Hello“+name; }}RESTful
WebServiceimportjavax.ws.rs.GET;importjavax.ws.rs.Path;importjavax.ws.rs.PathParam;importjavax.ws.rs.Produces;importjavax.ws.rs.core.MediaType;@Path("/helloREST/{name}")publicclassHelloREST{
@GET @Produces(MediaType.TEXT_PLAIN) publicStringgetHello(@PathParam("name")Stringname){ return"Hello*"+name+"*fromJAX-RS"; } }@Annotation
Course5
CDIResourceInjectionJEE5@WebServlet(“/product”)publicProductServletextendsHttpServlet{
@Inject privateProductBean
productBean; ..}@StatelesspublicclassProductBean{ ..}AmbiguousInject@Qualifierpublic@interfaceCarPolicyNo{}@Qualifierpublic@interfaceFirePolicyNo{}@CarPolicyNoGeneratorpublicclassCarPolicyNoGeneratorimplementsPolicyNoGenerator{..}@FirePolicyNoGeneratorpublicclassFirePolicyNoGeneratorimplementsPolicyNoGenerator{..}publicclassFireService{
@Inject @FirePolicyNoGenerator privatePolicyNoGenerator
policyNoGenerator;}@ProducespublicclassDatabaseProducer{
@Produces@PersistenceContext(unitName=“ds1”)
@FireDatabase privateEntityManager
em;}publicclassFireService{
@Inject
@FireDatabase privateEntityManager
em;}@Annotation
Course6
OpensourcesjUnit3.ximportjunit.framework.Assert;importjunit.framework.TestCase;publicclassCalculateServiceTest3extendsTestCase{ publicvoidsetUp()throwsException{} publicvoidtestSum(){
intactual=newCalculateService().sum(3,5);
Assert.assertEquals(8,actual); } publicvoidtearDown()throwsException{}}jUnit4.xpublicclassCalculateServiceTest4extendsTestCase{ @BeforeClass publicstaticvoidsetUpBeforeClass()throwsException{}
@Before publicvoidbeforeTest()throwsException{}
@Test publicvoidtheSum(){ Assert.assertEquals(8,newCalculateService().sum(3,5)); }
@After publicvoidafterTest()throwsException{}
@AfterClass publicstaticvoidtearDownAfterClass()throwsException{}}Spring2.5<beans> <beanid=“newsDao”class=“javatwo.annotation.spring.NewsDao”/> <beanid=“newsService”class=“javatwo.annotation.spring.NewsService”> <propertyname=“newsDao”> <refbean=“newsDao”/> </property> </bean></beans>@ServicepublicclassNewsService{
@Autowired privateNewsDao
newsDao;}
Spring3.0@NamedpublicclassNewsService{
@Inject privateNewsDao
newsDao;}Spring3.0@ConfigurationpublicclassAppConfig{ private@Value(“#{sysprop.dbURL}”)StringdbURL; private@Value(“#{sysprop.username}”)Stringusername; private@Value(“#{sysprop.password}”)Stringpassword;
@Bean publicDataSource
dataSource(){ returnnewDriverManagerDataSource(dbURL,username,password); }}MVCinSpring3.0@Controller@RequestMapping(“/news”)publicclassNewsController{
@RequestMaaping(value=“{id}”, method=RequestMethod.GET)
publicModelAndView
getById(@PathVariable(“id”)Longid){ return… }}@Annotation
Course7
Javassist/ASMReflectionClassmyClass=MyClass.class;Method[]myMethods=myClass.getMethods();for(Method
myMethod:myMethods){
Annotation[]annotations=myMethod.getAnnotations(); for(Annotation
annotation:annotations){ if(annotationinstanceof
MyAnno){
MyAnno
myAnno=(MyAnno)annotation; //dosomething } }}ScaninClassLoaderproject(basedonjavassist)URL[]urls=ClasspathUrlFinder.findClassPaths();AnnotationDBdb=newAnnotationDB();db.scanArchives(urls);Map<String,Set<String>>annoIndex=db.getAnnotationIndex();Set<String>aClassNames=annoIndex.get(“java
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校舆情应对工作制度
- 学校防风防汛工作制度
- 实验室半夜工作制度
- 审计事务中心工作制度
- 小区隐患排查工作制度
- 小学后勤卫生工作制度
- 小学学生帮扶工作制度
- 小学民主管理工作制度
- 2026年核医学技术卫生通关练习试题附答案详解【典型题】
- 2026年国开电大审美入门形考自测题库带答案详解(基础题)
- 【高考真题】2024年高考语文全国卷文言文阅读真题汇编及官方答案
- DB51T 2786-2021 研学旅行基地(营地)设施与服务规范
- 湖北省技能高考(计算机类)近年考试真题题库含答案
- 舌根后坠患者护理
- 一年级数学个位数加减法口算练习题大全(连加法-连减法-连加减法直接打印版)
- 广东省高考英语听说模仿朗读语音学习课件
- 制剂质量检查技术-片剂硬度检查的操作规范
- 2024年公安机关理论考试题库500道附参考答案(考试直接用)
- 质量保证体系图
- 钱钟书《吃饭》赏析
- 检验常用名词缩写中英文对照大全医学检验专业词汇省写
评论
0/150
提交评论