java注解注入代码 java中注解如何实现的-成都快上网建站

java注解注入代码 java中注解如何实现的

java注解为什么可以添加代码

定义规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。(这些规范并不是一定要绝对遵守,但是一定要让程序有良好的可读性)。// 注释一行 /* ...... */ 注释若干行 /** ...... */ 注释若干行,并写入 javadoc 文档

创新互联2013年开创至今,是专业互联网技术服务公司,拥有项目网站设计、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元江源做网站,已为上家服务,为江源各地企业和个人服务,联系电话:18980820575

如下代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

package com.qiu.lin.he;

/**

* 第三种注释方式

* @author Administrator

*

*/

public class CeShi {

public static void main(String[] args) {

int str = 107653;

//System.out.print(str / (24 * 60 * 60) + "天");

/*System.out.print(str % (24 * 60 * 60) / (60 * 60) + "小时");

System.out.print(str % (24 * 60 * 60) % (60 * 60) / 60 + "分钟");*/

System.out.print(str % (24 * 60 * 60) % (60 * 60) % 60 + "秒");

}

}

JAVA代码加注解,急,在线等,满意加分

package X3DBuilder;

import java.io.*;

public class X3DCreator

{

public int xBins;

public int yBins;

public int i;

public int k;

public float min =0;

public float max = 0;

public double xSpacing;

public double zSpacing;

public double scalefactor;

public float[][] data;

public float[][] data2;

public float[] data1;

public X3DCreator() throws IOException

{

//导入文件test1513.data,并建立通向test1513.data的输入流

BufferedReader in = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("test1513.data")));

//从文件中读取第一行,并且将其格式化成数字xBins

xBins = Integer.parseInt(in.readLine());

//从文件中读取第二行,并且将其格式化成数字yBins

yBins = Integer.parseInt(in.readLine());

//算法,计算两数各自减一后的倒数

xSpacing = 1.0/(xBins-1);

zSpacing = 1.0/(yBins-1);

//将两数分别储存到数组data 中

data = new float[xBins][yBins];

//将两数的乘积储存到数组data1 中

data1 = new float[xBins*yBins];

//将两数分别储存到数组data2 中

data2 = new float[yBins][xBins];

for (i=0; ixBins; i++)

for (int j=0; jyBins; j++){

//继续从文件的第三行开始一行一行读取信息.并将读出的数据放在data中

data[i][j] = Float.parseFloat(in.readLine());

//通过多次循环比较获得数组data中的最大值并赋值给max

if (max data[i][j])

max = data[i][j];

//通过多次循环将二维数组data中的数据全部放置到数组data1中

data1[k]= data[i][j];

k=k+1;

}

//赋值max的倒数给scalefactor

scalefactor = 1.0/max;

//关闭读取文件的流对象

in.close();

//打印data1的第16 个元素

System.out.println(data1[16]);

//打印data所有元素的个数

System.out.println(k);

for (i=0; iyBins; i++)

for (int j=0; jxBins; j++){

//循环赋值

data2[i][j] = data1[j*yBins+i];

}

//创建写入文件test.x3d的流

BufferedWriter fout = new BufferedWriter(new FileWriter("test.x3d"));

//创建读取文件x3d1.txt的流

BufferedReader in2 = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("x3d1.txt")));

String inputLine;

while ((inputLine = in2.readLine()) != null) {

//fout.write(inputLine);

//一行一行把从文件x3d1.txt读取的字符串写入文件test.x3d。

fout.append(inputLine);

//写入一个行分隔符,也就是换行。

fout.newLine();

}

fout.newLine();

//下面应该是写入一些xml内容

fout.append("ElevationGrid height ='");

for (i=0; iyBins; i++)

for (int j=0; jxBins; j++)

{

// fout.append(" "+scalefactor*data2[i][j]+" ");

fout.append(" "+data2[i][j]+" ");

}

fout.append("'");

fout.append(" xDimension='" + xBins + " ' ");

fout.append(" xSpacing='" + xSpacing + " '");

fout.append(" zDimension='" + yBins + "' ");

fout.append(" zSpacing='" + zSpacing + "'/ ");

fout.newLine();

//关闭读取流

in2.close();

// BufferedWriter fout2 = new BufferedWriter(new FileWriter("test.svg",true));

BufferedReader in3 = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("x3d2.txt")));

String inputLine2;

while ((inputLine2 = in3.readLine()) != null) {

//继续将文件x3d2.txt的内容也写入到test.x3d中

fout.append(inputLine2);

fout.newLine();

}

//关闭读取文件流

in3.close();

//关闭写入文件流.

fout.close();

}

}

//结束

如何利用Java实现资源注入

Java的功能强大,今儿博洋教育将给大家介绍。 需求:一个应用有两个数据库,分别为DB-A,DB-B。 假设持久层框架使用iBatis来实现,那么SqlMapClient对象在创建时,对于两个不同的DB连接要有两个不同的SqlMapClient对象, 假设我们有一个Service类为MyService.java,该类中有两个SqlMapClient对象sqlMapA、sqlMapB分别对应着DB-A、DB-B。 先看看我们的SqlMapClient.java类:(自定义SqlMapClient类,用来演示。) import java.util.Map; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; @SuppressWarnings("unchecked") public class SqlMapClient { public SqlMapClient(String s, String t) { sqlMap = s; type = t; } public SqlMapClient() { } private String type = null; private String sqlMap = null; // get、set方法 略 // 用于演示查询后返回一个String的返回结果 public String selectForObject(String sql, Map in) { return this.toString(); } @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)。append("sqlMap", sqlMap) .append("type", type)。toString(); } } MyService.java类实现: import java.util.Map; @SuppressWarnings("unchecked") public class MyService { @DataSource(type="B", sqlMap="com/annotation/sql-map-config-B.xml") private SqlMapClient sqlMapB = null; @DataSource(type="A", sqlMap="com/annotation/sql-map-config-A.xml") private SqlMapClient sqlMapA = null; // get、set方法 略 // 模拟在DB-B数据库取得数据 public String selectForObjectFromB(String sql, Map in) { return sqlMapB.selectForObject("", null); } // 模拟在DB-A数据库取得数据 public String selectForObjectFromA(String sql, Map in) { return sqlMapA.selectForObject("", null); } } 接下来就是我们的注解类:DataSource.java import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface DataSource { /** * Dao的类型 * @return */ String type() default "A"; // 连接的数据库类型 A or B String sqlMap() default ""; // Sql-Map-Config文件的路径,用于加载iBatis的SqlMapClient对象 } 定义资源注入的接口 IFieldWiring.java。 之所以这里要定义这个接口,是为了以后扩展用,我们很方便的定义更多的自定义注解。 IFieldWiring.java import java.lang.annotation.Annotation; import java.lang.reflect.Field; public interface IFieldWiring { Class clazz = obj.getClass(); try { String methodname = "get" + StringUtils.capitalize(fieldName); Method method = clazz.getDeclaredMethod(methodname); method.setAccessible(true); return method.invoke(obj); } catch (Exception e) { try { Field field = clazz.getDeclaredField(fieldName); field.setAccessible(true); return field.get(obj); } catch (Exception e1) { e1.printStackTrace(); } } return null; } public static void setFieldValue(Object target, String fname, Class fieldClass, Object fieldObj) { if (!fieldClass.isAssignableFrom(fieldObj.getClass())) { return; } Class clazz = target.getClass(); try { Method method = clazz.getDeclaredMethod("set" + Character.toUpperCase(fname.charAt(0)) + fname.substring(1), fieldClass); method.setAccessible(true); method.invoke(target, fieldObj); } catch (Exception e) { try { Field field = clazz.getDeclaredField(fname); field.setAccessible(true); field.set(target, fieldObj); } catch (Exception e1) { e1.printStackTrace(); } } } } 已经基本大功告成了,只要将我们的DataSourceWiring.java类使用起来即可。 MyAnnotationBeanProcessor.java,这个类主要用于为bean对象注入资源。 import java.lang.reflect.Field; public class MyAnnotationBeanProcessor { /** * 注入资源 * @param serviceObject * @param fieldAutoWirings // 所有实现IFieldWiring的接口的对象,我们可以在此扩展 * @throws Exception */ public void wire(Object serviceObject, IFieldWiring fieldAutoWirings) throws Exception { Class cls = serviceObject.getClass(); for (Field field : cls.getDeclaredFields()) { for (IFieldWiring fieldAutoWiring : fieldAutoWirings) { if (field.isAnnotationPresent(fieldAutoWiring.annotationClass())) { fieldAutoWiring.wiring(serviceObject, field); break; } } } } } 好了,开始我们的测试类:FieldWiringTest.java public class FieldWiringTest { public static void main(String args[]) throws Exception { MyAnnotationBeanProcessor processor = new MyAnnotationBeanProcessor(); MyService b = new MyService(); processor.wire(b, new DataSourceWiring()); // 注入DataSource资源 System.out.println(b.selectForObjectFromB("", null)); System.out.println(b.selectForObjectFromA("", null)); } } 执行结果: SqlMapClient[sqlMap=com/annotation/sql-map-config-B.xml,type=B] SqlMapClient[sqlMap=com/annotation/sql-map-config-A.xml,type=A] 由执行结果可以说明DataSource资源已经被我们正确的注入了。 如果想扩展的话,只需要新建一个类实现IFieldWiring接口即可。假设叫InParamWiring.java,实现了接口定义的两个方法后,在使用的时候,只要用以下代码便可将资源注入了: MyAnnotationBeanProcessor processor = new MyAnnotationBeanProcessor(); MyService b = new MyService(); processor.wire(b, new DataSourceWiring(), new InParamWiring()); // 注入DataSource、InParam资源. 更多Java学习技巧,尽在博洋教育。若您想了解java程序培训价格,欢迎向我们的在线老师进行详细了解。


网站栏目:java注解注入代码 java中注解如何实现的
URL链接:http://kswjz.com/article/dojsdgc.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流