一、注解 Annotation
1.@override : 准确覆写
2.@deprecated : 声明过期操作,实现方法的新旧更替。
3.@suppressWarnings : 压制警告
二、反射机制
1.“反”是指通过对象可以找到对象的出处(即是那个类的对象)
2.Class类对象实例化
java.lang.class 是一个类,这个类是反射操作的源头。即所有的反射都要从此类开始进行,这个类有三种实例化方式。
Class<?> cls = date.getClass(); //调用Object类中的getclass方法
Class<?> cls = Date.class(); //使用“类.class”取得 用于ssh框架
//调用class类提供的一个方法
public static Class<?> forname(String className)
Class<?> cls = class.forName("java.util.Date"); //重要 // 此时可以不用import导入一个明确的类,二十用类名称字符串的形式描述。
3.反射实例化对象
实例化对象方法:public T newInstance();
例: Class<?> cls = Class.forName("cn.mldn.demo.book");
objecr obj = cls.newInstrance(); //相当于使用NEW调用无参构造实例化
4.使用反射调用构造
调用构造方法
例子:
Class<?> cls = Class.forName("cn.mldn.demo.book");
Constructor con = cls.getConstructor(String.class,double.class) //调用制定参数的构造方法
objecr obj = cls.newInstrance(); //相当于使用NEW调用无参构造实例化
5.调用普通方法 invoke 调用成员 *
三、Spring
1、依赖注入指的就是利用配置文件的关系来决定类之间的引用关系以及数据的设置操作。
1.1 构造方法注入
·applicationContext.xml:
|- <bean id = "用于调用的id" class="类的位置" />
|- <bean id = "用于调用的id" class="类的位置" >
<construction-arg name = "paramDname" index="0" value="****"/>
</bean>
· *.java
|- 在java文件中调用Spring实例化好的对象
ApplicationContext ctx = new classPathXmlApplicationContext("applicationContext.xml");
Dept vo = ctx.getBean("设置的id",Dept.class); //Dept 为 Dept.java
*********************************************************************************//
设置参数名称 : @ConstructionProperties(value = {XXX , XXX})
2、setter 注入
1、|-在java类中写上 getter setter 方法
|- applicationContext。xml
<bean id="" class = "" >
<property name = "属性名" value = "属性值" />
<property name = "@@@" ref ="引用其他Bean对象"/>
设置属性为空
<property name = "属性名" value = "属性值" /> // 不设置对应的属性及为空
<property name = "属性名" ><null/></bean>
</bean>
2、注入集合数据
|-
<bean id="****" class = "****" >
<property name = "属性名" >
<list value-type="java.lang.String">
<value> shuju </value>
</list> // 也可以写成arrery List集合 = 数组 set集合没有重复数据
</property>
//map 集合的 注入
<property name = "属性名" >
<map key-type = "" value-type="">
<enrty key="1" value="值的数据">
</map>
</property>
//Property 类型数据植入
<property name = "msg">
<props>
<prop key="mldn">www.mldn.com</prop>
</props>
</property>
</bean>
3、P命名空间
<bean id = "" class = "" p:empName = "" > // z主要就是 P:属性
4、自动装配
尽量指定bean
<bean id = "@@@" class="@@@" autuwire = "byType">
//根据类型自动装配所需要的bean对象并且自动引用
//autowire-candidate="false" 为自动推出自动匹配
</bean>
<bean id = "deptB" class="!!!!" primary="ture">
// 此配置为优先配置,当自动配置时,不会有冲突
</bean>
5、延迟加载
<bean id = "deptB" class="!!!!" lasz-init = "ture">
<property name ="empno" value ="4545" / >
<property name ="empname" value ="joe" / >
</bean>
// 初始化于销毁
<bean id = "deptB" class="!!!!" linit-method="java中的初始化方法" destroy-method ="java中的销毁方法">
5.Annotation配置注入关系
启用context的命名空间
在appcationContext.xml 中 用 <context:annotation - config/> 启用annotation
三个注解
1.@Componect: 定义组件,在DAO上使用
2.@service:定义组件,在Service中使用
3.@Repository:定义组件 ,在action中使用
4.@Resource:引用关系
6、Resourse资源的读取
在.java 文件中 读取
ResourceLoader loader = new DefaultResourceLoader();
Resource resource = loader.getResource("file:路径"); //读取文件
Resource resource = loader.getResource("classpath:路径");//读取Classpath文件
Resource resource = loader.getResource("http://:路径");// 读取网络文件
1.注入Resouce
即:在applicationContext文件中进行配置
<bean id="" class="">
<property name = "resource" value="file:路径"> // value 的值同上
</bean>
2.路径通配符(重点)
" ? " : 匹配任意一位字符
" * " :匹配零个、一个或是多个任意字符
" ** " : 匹配任意的目录,可以是零个、一个或是多个。