您的位置:首页 > 编程语言 > Java开发

Spring - 注解的使用 和 继承的配置

2015-12-28 10:39 344 查看

1.注解

   (1)注解就是为了说明java中的某一个部分的作用(Type); 

   (2)注解都可以用于那个部分是@Target注解起的作用;

   (3)注解可以标注在ElementType枚举类所指定的位置上;

   (4)用来解析注解的类成为注解解析器;

2.依赖注入的注解

    (1) bean.xml 导入注解解析器 - context命名空间,只有引用类型可以加上注解,基本类型不可以;

    (2)@Resource使用步骤:

           1) 在spring的配置文件中导入命名空间

xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"


   2) 引入注解解析器
<context:annotation-config/>


   3) 在spring的配置文件中把bean引入进来
<bean id="person_di" class="cn.labelnet.di.Person">
</bean>

<bean id="student_di" class="cn.labelnet.di.Student"></bean>

   4) 在一个类属性上把bean引入进来
@Resource(name="student_di")
private Student student;

   5) 在一个类的属性上加上@Resource(name="")
    该注解可以用于属性上或者方法上,但一般用于属性上,属性name默认值为"";
 
      (3)示例

             1)Person类

public class Person {

private String name;
private Integer age;

@Resource(name="student_di")
private Student student;

public void showStudent(){
this.student.say();
}

}

           2)Student类
public class Student {

public void say(){
System.out.println("我是学生");
}
}


          3)配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config/>

<bean id="person_di" class="cn.labelnet.di.Person">
</bean>

<bean id="student_di" class="cn.labelnet.di.Student"></bean>

</beans>

        4)测试

@Test
public void testDI() {

Person person=(Person) context.getBean("person_di");
person.showStudent();
}

      (4)总结:

                当启动spring容器的时候,spring容器加载了配置文件,只要遇到bean的配置,就会
  为该bean创建对象,在容器范围内查找所有的bean,如果有@Resource注解,判断注解name属
  性值是否与speing容器中ID的值做匹配,匹配成功则赋值;

3.类扫描注解

    (1)类扫描的注解解析器 
  component : 指的就是一个类;base-package 在该包 

     (2)基本步骤:
1. 导入命名空间

xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

2. 引用注解解析器
    包含两个功能,类扫描和依赖注入,在base-package包下的查找所有类;
<context:component-scan base-package="包名"></context:component-scan>

3. 配置@Component("")
@Component("a")
public class Person {

private String name;
private Integer age;

@Resource(name = "b")
private Student student;

public void showStudent() {
this.student.say();
}

}

4. 按照@Resource步骤来使用;
 
    (3)示例

           1)Person类

@Component("a")
public class Person {

private String name;
private Integer age;

@Resource(name = "b")
private Student student;

public void showStudent() {
this.student.say();
}

}

        2)Studnet类
@Component("b")
public class Student {

public void say(){
System.out.println("我是学生 SCAN");
}
}

      3)bean配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:component-scan base-package="cn.lablenet.scan"></context:component-scan>

</beans>

         4)测试
@Test
public void testScan() {

Person person=(Person) context.getBean("a");
person.showStudent();
}

    (4)总结xml与注解
  1. xml书写麻烦,但是效率高;
  2. 注解书写简单,但效率低;(可以忽略)

4.示例 - 简单的mvc程序

    使用的注解有 : @Repository , @Service , @Controller ,分别对应 dao层,service层,action层;

  (1)dao 接口

public interface DocumentDao {
void saveDocument();
}
  
   (2)dao实现

@Repository("DocDao")
public class DocumentDaoImpl implements DocumentDao {
@Override
public void saveDocument() {
System.out.println("保存成功");
}
}

    (3)service接口
public interface DocumentService {
void saveDocument();
}

    (4)service实现
@Service("DocService")
public class DocumentServiceImpl implements DocumentService {
@Resource(name="DocDao")
private DocumentDao docdao;

@Override
public void saveDocument() {
docdao.saveDocument();
}
}

    (5)action实现
@Controller("DocController")
public class DocumentView {

@Resource(name="DocService")
private DocumentService doucService;

public void saveDoc(){
doucService.saveDocument();
}

}


    (6)bean配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:component-scan base-package="cn.labelnet.mvc"></context:component-scan>

</beans>

    (7)测试
@Test
public void testDocument() {

DocumentView view= (DocumentView)context.getBean("DocController");
view.saveDoc();
}

5.继承配置 

    继承 :
  在配置文件中 给 bean 添加 abstruct="true" 属性,告诉spring容器,该bean不能创建对象;
  子类想用父类的属性,需要在bean 添加 parent="xxx abstruct" 属性,添加父类bean的id;

    示例:

     父类 :

public class Person {
private String name;
public void say(){
System.out.println("我是父类");
}
}


    子类 :
   public class Student extends Person {

}

   bean配置 :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="person_ex" class="cn.labelnet.extend.Person" abstract="true"></bean>

<bean id="student_ex" class="cn.labelnet.extend.Student" parent="person_ex"></bean>

</beans>

6.Demo免积分下载

http://download.csdn.net/detail/lablenet/9379973
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  注解 bean spring 继承