Spring初学之annotation自动装配

直接看代码:

UserController.java

package spring.beans.annotation.controller;

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

import spring.beans.annotation.service.UserService;

@Controller
public class UserController {

    @Autowired
    private UserService userService;
    public  void add() {

        System.out.println("UserController add...");
        userService.add();
    }
}

UserService.java

package spring.beans.annotation.service;

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

import spring.beans.annotation.repository.UserRepository;
import spring.beans.annotation.repository.UserRepositoryImpl;

@Service
public class UserService {

    @Autowired
    @Qualifier("userRepositoryImpl")
    private UserRepository userRepository;
    public void add(){
        System.out.println("UserService add...");
        userRepository.add();
    }
}

UserRepository.java

package spring.beans.annotation.repository;

public interface UserRepository {
    public void add();
}

UserRepositoryImpl.java

package spring.beans.annotation.repository;

import org.springframework.stereotype.Repository;

@Repository//("userRepository")
//这里设置的value="userRepository",也可以用@Qualifier("userRepositoryImpl")写在装配它的地方
public class UserRepositoryImpl implements UserRepository {

    @Override
    public void add() {
        System.out.println("UserRepositoryImpl add...");
    }

}

xml:

<?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.3.xsd">

    <!-- 扫描指定spring IOC容器的类 -->
    <!--使用resource-pattern扫描特定的类 -->
    <!--
    <context:component-scan base-package="spring.beans.annotation"
        resource-pattern="repository/*.class">
    </context:component-scan>
     -->

     <!-- 筛选扫描 -->
    <context:component-scan base-package="spring.beans.annotation"
    >
        <!-- 扫描不包含指定类型(表达式)的类 -->
        <!--
        <context:exclude-filter type="annotation"
        expression="org.springframework.stereotype.Repository"/>
         -->
         <!-- 扫描包含指定类型(表达式)的类(context下设置use-default-filters="false")配合使用 -->
         <!-- <context:include-filter type="annotation"
         expression="org.springframework.stereotype.Repository"/>
          -->
          <!-- 扫描除了该接口 或该接口实现类的类 -->
          <!-- <context:exclude-filter type="assignable"
          expression="spring.beans.annotation.repository.UserRepository"/>
           -->
          <!-- 只扫描包含该接口 或该接口实现类的类 (context下设置use-default-filters="false")配合使用-->
          <!-- <context:include-filter type="assignable"
          expression="spring.beans.annotation.repository.UserRepository"/>
             -->
    </context:component-scan>

</beans>
时间: 2024-10-27 07:04:59

Spring初学之annotation自动装配的相关文章

创建spring自定义注解进行自动装配

1.创建自定义注解 1 import org.springframework.beans.factory.annotation.Qualifier; 2 import java.lang.annotation.ElementType; 3 import java.lang.annotation.Retention; 4 import java.lang.annotation.RetentionPolicy; 5 import java.lang.annotation.Target; 6 7 8

Spring @Autowired注解与自动装配

1   配置文件的方法 一般编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. Boss 拥有 Office 和 Car 类型的两个属性 1 public class Boss { 2 private Car car; 3 private Office office; 4 5 // 省略 get/setter 没写 6 7 @Override 8 public String toStri

Spring基于的注解自动装配和依赖注入(***)

#自动装配的小Demo: package com.gyf.annotation; public interface UserDao { public void save(); } package com.gyf.annotation; import org.springframework.stereotype.Repository; @Repository("userDao") public class UserDaoImpl implements UserDao { @Overrid

Spring学习总结(2)-自动装配

上面说过,IOC的注入有两个地方需要提供依赖关系,一是类的定义中,二是在spring的配置中需要去描述.自动装配则把第二个取消了,即我们仅仅需要在类中提供依赖,继而把对象交给容器管理即可完成注入.在实际开发中,描述类之间的依赖关系通常是大篇幅的,如果使用自动装配则省去了很多配置,并且如果对象的依赖发生更新我们可以不需要去更新配置,但是也带来了一定的缺点. 说白了就是只需要声明bean,至于对象间的相互引用关系由Spring自己搞定.. 使用方式:no(不启用),byName(根据名称),byTy

8 -- 深入使用Spring -- 7...4 使用自动装配

8.7.4 使用自动装配 在自动装配策略下,Action还是由Spring插件创建,Spring 插件在创建Action实例时,利用Spring的自动装配策略,将对应的业务逻辑组件注入Action实例中.这种整合策略的配置文件简单,但控制器和业务逻辑组件耦合又提升到了代码层次,耦合较高. 如果不指定自动装配,则系统默认使用按byName自动装配.前面的整合策略并没有指定任何自动装配策略. 所谓自动装配,即让Spring自动管理Bean与Bean之间的依赖关系,无须使用ref显示指定依赖Bean.

在Spring中通过构造自动装配--constructor

在Spring中,可以使用"通过构造自动装配",实际上是按构造函数的参数类型自动装配. 这意味着,如果一个bean的数据类型与其他bean的构造器参数的数据类型是相同的,那么将自动装配. package auto_constructor; /** * Created by luozhitao on 2017/8/9. */ public class student { public String getName() { return name; } public void setNam

【Spring实战】—— 8 自动装配

本篇介绍一下自动装配的知识,Spring为了简化配置文件的编写.采用自动装配方式,自动的装载需要的bean. 自动装配 有以下几种方式: 1 byName 通过id的名字与属性的名字进行判断,要保证Bean实例中属性名字与该装配的id名字相同. 2 byType 通过类型确定装配的bean,但是当存在多个类型符合的bean时,会报错. 3 contructor 在构造注入时,使用该装配方式,效果如同byType. 4 autodetect 自动装配,这个测试了,3.0.5版本不可用了,不知道是不

Spring初学之annotation实现AOP前置通知和后置通知

实现两个整数的加减乘除,并在每个计算前后打印出日志. ArithmeticCalculator.java: package spring.aop.impl; public interface ArithmeticCalculator { int add(int i,int j); int sub(int i,int j); int mul(int i,int j); int div(int i,int j); } ArithmeticCalculatorImpl.java: package sp

spring属性赋值和自动装配

一  @Value赋值和@propertySource加载外部配置文件 1.@Value 一般用在属性和setter方法上,当该类注册成bean时,会自动为其属性或方法的参数赋值.注意:一定不能用在静态方法上,否则会失效 2.用法: @Value("placeholder")    //赋予指定值 @Value("${placeholder}")  //赋予配置文件中指定key为placeholder的值 3.@PropertySource("classp