码迷,mamicode.com
首页 > 编程语言 > 详细

Spring使用教程(三)注解2

时间:2015-06-12 00:31:56      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

Bean于Bean之间存在关联关系情况下使用注解

•@Autowired 注解自动装配具有兼容类型的单个 Bean属性
构造器, 普通字段(即使是非 public), 一切具有参数的方法都可以应用@Authwired 注解
默认情况下, 所有使用 @Authwired 注解的属性都需要被设置. 当 Spring 找不到匹配的 Bean 装配属性时, 会抛出异常, 若某一属性允许不被设置, 可以设置 @Authwired 注解的 required 属性为 false
–默认情况下, 当 IOC 容器里存在多个类型兼容的 Bean 时, 通过类型的自动装配将无法工作. 此时可以在 @Qualifier 注解里提供 Bean 的名称. Spring 允许对方法的入参标注 @Qualifiter 已指定注入 Bean 的名称
– @Authwired 注解也可以应用在数组类型的属性上, 此时 Spring 将会把所有匹配的 Bean 进行自动装配.
–@Authwired 注解也可以应用在集合属性上, 此时 Spring 读取该集合的类型信息, 然后自动装配所有与之兼容的 Bean.
–@Authwired 注解用在 java.util.Map 上时, 若该 Map 的键值为 String, 那么 Spring 将自动装配与之 Map 值类型兼容的 Bean, 此时 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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
        <!-- 指定Spring IOC容器扫描的包 -->
        <!-- resource-pattern  扫描指定的资源 -->
        <!--  <context:component-scan base-package="com.test.spring.annotation"
            resource-pattern="controller/*.class"
        ></context:component-scan>-->
        
        <!-- exclude-filter 子节点指定排除那些指定表达式的组件 -->
        <!-- include-filter 子节点包含那些表达式的组件,需要配置 use-default-filters为false-->
        <context:component-scan base-package="com.test.spring.annotation" > 
        <!-- 
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
            <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
             -->
             <!-- - 
             <context:exclude-filter type="assignable" expression="com.test.spring.annotation.TestObject"/>
             
             <context:include-filter type="assignable" expression="com.test.spring.annotation.TestObject"/>
             -->
        </context:component-scan>
</beans>
技术分享
    public static void main(String[] args) {
        ApplicationContext con=new ClassPathXmlApplicationContext("beans_annocation.xml");
//        TestObject to=(TestObject) con.getBean("testObject");
//        System.out.println(to);
//        
//        UserService ser=(UserService) con.getBean("userService");
//        System.out.println(ser);
//        
//        
        UserController ucon=(UserController) con.getBean("userController");
        System.out.println(ucon);
        ucon.execute();
//        UserRepositoryImlpl ur=(UserRepositoryImlpl) con.getBean("userRepository");
//        System.out.println(ur);
        
    }
View Code
技术分享
package com.test.spring.annotation.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import com.test.spring.annotation.service.UserService;

@Controller
public class UserController {
    @Autowired
    private UserService userservice;
     
    //@Autowired可以放在有参数的方法上
    public void setUserservice(UserService userservice) {
        this.userservice = userservice;
    }


    public void execute(){
        System.out.println("usercontroller");
        userservice.add();
        
    }
}
View Code
技术分享
package com.test.spring.annotation.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import com.test.spring.annotation.repository.UserRepository;

@Service
public class UserService {
    @Autowired
    @Qualifier("userRepository")//指定装配那一个bean
    private UserRepository userRepository;
    
    //可以卸载参数前面
    public void setUserRepository(@Qualifier("userRepository")UserRepository userRepository) {
        this.userRepository = userRepository;
    }


    public void add(){
        System.out.println("USERSERVICE的 add");
        userRepository.save();
    }
}
View Code
技术分享
package com.test.spring.annotation.repository;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.test.spring.annotation.TestObject;
//注解可以通过value属性值标识,bean在IOC容器中的name 
@Repository("userRepository")
public class UserRepositoryImlpl implements UserRepository{
    @Autowired(required=false)
    private TestObject to;
    public void save() {
        System.out.println("实现接口的save");
        
    }

     
}
View Code

 

Spring使用教程(三)注解2

标签:

原文地址:http://www.cnblogs.com/img-zoom/p/4570427.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!