spring常用的注入方式有哪些? | 您所在的位置:网站首页 › spring常见的注入方式有哪些 › spring常用的注入方式有哪些? |
1、xml中配置 bean 的申明、注册节点注册 bean 节点的 factory-bean 参数指工厂 bean,factory-method 参数指定工厂方法 bean 的注入 节点使用 set 方式注入 节点使用 构造方法注入
实测代码 maven pom 文件 org.springframework spring-beans 4.2.4.RELEASE org.springframework spring-context 4.2.4.RELEASE
a) + ,set方法注入 class Bowl package constxiong.interview.inject; public class Bowl { public void putRice() { System.out.println("盛饭..."); } }class Person package constxiong.interview.inject; public class Person { private Bowl bowl; public void eat() { bowl.putRice(); System.out.println("开始吃饭..."); } public void setBowl(Bowl bowl) { this.bowl = bowl; } }spring 配置文件 测试类 package constxiong.interview.inject; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class InjectTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("spring_inject.xml"); Person person = (Person)context.getBean("person"); person.eat(); } }
b) 修改为 配置文件和class Person, + 节点使用 构造方法注入 class Person package constxiong.interview.inject; public class Person { private Bowl bowl; public Person(Bowl bowl) { this.bowl = bowl; } public void eat() { bowl.putRice(); System.out.println("开始吃饭..."); } }spring 配置文件
c) 节点 factory-method 参数指定静态工厂方法 工厂类,静态工厂方法 package constxiong.interview.inject; public class BowlFactory { public static final Bowl getBowl() { return new Bowl(); } }spring 配置文件
d) 非静态工厂方法,需要指定工厂 bean 和工厂方法 工厂类,非静态工厂方法 package constxiong.interview.inject; public class BowlFactory { public Bowl getBowl() { return new Bowl(); } }配置文件
2、注解 bean 的申明、注册@Component //注册所有bean @Controller //注册控制层的bean @Service //注册服务层的bean @Repository //注册dao层的bean bean 的注入 @Autowired 作用于 构造方法、字段、方法,常用于成员变量字段之上。 @Autowired + @Qualifier 注入,指定 bean 的名称 @Resource JDK 自带注解注入,可以指定 bean 的名称和类型等
测试代码 e) spring 配置文件,设置注解扫描目录
class Bowl package constxiong.interview.inject; import org.springframework.stereotype.Component; //import org.springframework.stereotype.Controller; //import org.springframework.stereotype.Repository; //import org.springframework.stereotype.Service; @Component //注册所有bean //@Controller //注册控制层的bean //@Service //注册服务层的bean //@Repository //注册dao层的bean public class Bowl { public void putRice() { System.out.println("盛饭..."); } }
class Person package constxiong.interview.inject; //import javax.annotation.Resource; // import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; @Component //注册所有bean //@Controller //注册控制层的bean //@Service //注册服务层的bean //@Repository //注册dao层的bean public class Person { @Autowired // @Qualifier("bowl") // @Resource(name="bowl") private Bowl bowl; public void eat() { bowl.putRice(); System.out.println("开始吃饭..."); } }
测试类同上
a、b、c、d、e 测试结果都ok 盛饭... 开始吃饭...
|
CopyRight 2018-2019 实验室设备网 版权所有 |