美文网首页
spring_注入方式笔记

spring_注入方式笔记

作者: 回去生气0101 | 来源:发表于2018-10-13 10:26 被阅读0次

spring容器负责生成实例

  • Set注入
    这是最简单的注入方式,假设有一个SpringAction,类中需要实例化一个SpringDao对象,那么就可以定义一个private的SpringDao成员变量,然后创建SpringDao的set方法(这是ioc的注入入口)
package com.bless.springdemo.action; 
public class SpringAction { 
//注入对象springDao 
private SpringDao springDao; 
//一定要写被注入对象的set方法 
public void setSpringDao(SpringDao springDao) { 
this.springDao = springDao; 
}
  1. 随后编写spring的xml文件,
  2. <bean>中的name属性是class属性的一个别名,class属性指类的全名,因为在SpringAction中有一个公共属性Springdao,所以要在<bean>标签中创建一个<property>标签指定SpringDao。
  3. <property>标签中的name就是SpringAction类中的SpringDao属性名,ref指下面<bean name="springDao"...>,这样其实是spring将SpringDaoImpl对象实例化并且调用SpringAction的setSpringDao方法将SpringDao注入.
  • 构造器注入
    这种方式的注入是指带有参数的构造函数注入,看下面的例子,我创建了两个成员变量SpringDao和User,但是并未设置对象的set方法,所以就不能支持第一种注入方式,这里的注入方式是在SpringAction的构造函数中注入,也就是说在创建SpringAction对象时要将SpringDao和User两个参数值传进来:
public class SpringAction { 
//注入对象springDao 
private SpringDao springDao; 
private User user;
public SpringAction(SpringDao springDao,User user){  
    this.springDao = springDao;  
    this.user = user;  
    System.out.println("构造方法调用springDao和user");  
}  

    public void save(){  
    user.setName("卡卡");  
    springDao.save(user);  
} 

  1. 在XML文件中同样不用<property>的形式,而是使用<constructor-arg>标签,ref属性同样指向其它<bean>标签的name属性
  • 通过@Autowired注解实现自动装配,只要你注入的bean已经被spring管理就可以使用了
package com.cjwdemo.demoBySpring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import com.cjwdemo.demoBySpring.bean.Demo1;
import com.cjwdemo.demoBySpring.bean.Demo2;

@Configuration // @Configuration表示当前类为配置类
/*
 * @ComponentScan默认扫描当前包和子包的class文件
 * 有@Controller或@Component或@Service或@Repository则自动注册到spring管理
 */
@ComponentScan
public class Application {


    // 通过@Configuration和@Bean实现bean注册
    @Bean
    public Demo1 setDemo1() {
        return new Demo1();
    }

    public static void main(String[] args) {
        /*
         * ApplicationContext是BeanFactory的超类,需要通过配置类或xml配置文件创建出来,
         * 能通过该类直接获取spring管理的bean
         */
        ApplicationContext context = new AnnotationConfigApplicationContext(Application.class);
        Demo1 demo1 = context.getBean(Demo1.class);
        demo1.test();
        Demo2 demo2 = context.getBean(Demo2.class);
        demo2.test();
    }
}
// 获取demo1 bean成功
// 获取demo1 bean成功

package com.cjwdemo.demoBySpring.bean;

public class Demo1 {

    public void test() {
        System.out.println("获取demo1 bean成功");
    }

}
package com.cjwdemo.demoBySpring.bean;

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

@Component
public class Demo2 {

    @Autowired
    private Demo1 demo1;

    public void test() {
        demo1.test();
    }

}
  • 简单的spring项目
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.cjwdemo.demoBySpring</groupId>
    <artifactId>demoBySpring</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>demoBySpring Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.8.RELEASE</version>
        </dependency>

    </dependencies>
    <build>
        <finalName>demoBySpring</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

相关文章

  • spring_注入方式笔记

    spring容器负责生成实例 Set注入这是最简单的注入方式,假设有一个SpringAction,类中需要实例化一...

  • spring_注入方式笔记2

    Spring中,支持 5 种自动装配模式 no – 缺省情况下,自动配置是通过“ref”属性手动设定 byName...

  • Spring三种bean注入方式

    Spring中依赖注入有三种注入方式:一、构造器注入;二、设值注入(setter方式注入);三、Feild方式注入...

  • Spring的复杂类型注入

    注入方式 set方式注入,注入基本数值类型和引用类型 数组类型注入

  • Spring Bean 装配

    依赖注入的方式 依赖注入可以分为3种方式: 构造器注入。 setter注入。 接口注入。 其中构造器注入和 set...

  • 依赖注入的方式

    依赖注入: 依赖于某些方式给Bean的资源进行注入 Spring 支持三种依赖注入的方式 属性注入 构造器注入 工...

  • IOS 非越狱代码注入(dylib)

    前言 由于dylib注入方式和framework注入方式很像,所以下面直接演示使用脚本来注入 首先代码注入思路: ...

  • 2018-07-18

    依赖注入方式 1.0开始,setter、构造器注入 2.5开始,Autowired注解的基于field方式注入 创...

  • 注入方式

    预讲知识点 Spring中只有两大核心技术:IOC&DI(控制反转&依赖注入)、AOP(面向切面编程)。 重点讲解...

  • 【建议收藏】阿里P7总结的Spring注解笔记,把组件注册讲的明

    环境搭建 注解的方式是通过配置类的方式来注入组件,注解注入要比XML注入的方式简单,注解注入也需要在前者的基础上,...

网友评论

      本文标题:spring_注入方式笔记

      本文链接:https://www.haomeiwen.com/subject/bntoaftx.html