Sprint注入和bean的自动装配以及Autowired的用法
来源:互联网 发布:php safe mode 编辑:程序博客网 时间:2024/06/06 03:49
1、Spring注入
Spring注入常用的有两种方式,第一种是设值注入,第二种是构造注入。
1、设值注入
配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="book" class="com.wry.bean.Book"></bean> <bean id="reader" class="com.wry.bean.Reader"> <property name="book" ref="book" /> </bean> </beans>
Book.java
package com.wry.bean;public class Book {public void read(){System.out.println("readding book");}}Reader.java
package com.wry.bean;public class Reader {private Book book;public void setBook(Book book) {this.book = book;}public void readBook(){book.read();}}
测试
public class Demo {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml"); Reader reader = (Reader)context.getBean("reader");reader.readBook();}}
2、构造器注入
配置文件<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="book" class="com.wry.bean.Book"></bean> <bean id="reader" class="com.wry.bean.Reader"> <constructor-arg name="book" ref="book" /> </bean> </beans>
Book.java
package com.wry.bean;public class Book {public void read(){System.out.println("readding book");}}Reader.java
package com.wry.bean;public class Reader {private Book book;public Reader(Book book){this.book = book;}public void readBook(){book.read();}}
测试
public class Demo {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml"); Reader reader = (Reader)context.getBean("reader");reader.readBook();}}
2、bean的自动装配
bean的自动装配有三种方式,第一种通过byName,第二种通过byType,第三种通过constructor。1、通过byName
在Spring的配置文件头部加入default-autowire = “byName”,在xml中定义的bean不要property参数(或者constructor-arg)。
配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire = "byName"> <bean id="book" class="com.wry.bean.Book"></bean> <bean id="reader" class="com.wry.bean.Reader"></bean> </beans>Book.java
package com.wry.bean;public class Book {public void read(){System.out.println("readding book");}}Reader.java
package com.wry.bean;public class Reader {private Book book;public void setBook(Book book) {this.book = book;}public void readBook(){book.read();}}测试
public class Demo {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml"); Reader reader = (Reader)context.getBean("reader");reader.readBook();}}
2、通过byType
在Spring的配置文件头部加入default-autowire = “byType”,因为是通过类型注入的,所以bean中的id可以改名称,当然也可以bean的id删除。
配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire = "byType"> <bean class="com.wry.bean.Book"></bean> <bean id="reader" class="com.wry.bean.Reader"></bean> </beans>Book.java
package com.wry.bean;public class Book {public void read(){System.out.println("readding book");}}Reader.java
package com.wry.bean;public class Reader {private Book book;public void setBook(Book book) {this.book = book;}public void readBook(){book.read();}}测试
public class Demo {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml"); Reader reader = (Reader)context.getBean("reader");reader.readBook();}}
3、通过constructor
在Spring的配置文件头部加入default-autowire = “constructor”,因为是通过构造器注入的,所以bean中的id可以改名称,当然也可以bean的id删除。
配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire = "constructor"> <bean class="com.wry.bean.Book"></bean> <bean id="reader" class="com.wry.bean.Reader"></bean> </beans>Book.java
package com.wry.bean;public class Book {public void read(){System.out.println("readding book");}}Reader.java
package com.wry.bean;public class Reader {private Book book;public Reader(Book book){this.book = book;}public void readBook(){book.read();}}测试
public class Demo {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml"); Reader reader = (Reader)context.getBean("reader");reader.readBook();}}
3、Autowired的用法
配置文件统一配置如下:
<?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" 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-3.0.xsd"> <context:component-scan base-package="com.wry.bean"></context:component-scan></beans>Book.java代码统一如下:
package com.wry.bean;import org.springframework.stereotype.Component;@Componentpublic class Book {public void read(){System.out.println("readding book");}}测试代码统一如下:
public class Demo {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml"); Reader reader = (Reader)context.getBean("reader");reader.readBook();}}
1、成员变量方式
Reader.javapackage com.wry.bean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;@Componentpublic class Reader {@Autowiredprivate Book book;public void readBook(){book.read();}}
2、set方法方式
package com.wry.bean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;@Componentpublic class Reader {private Book book;@Autowiredpublic void setBook(Book book) {this.book = book;}public void readBook(){book.read();}}
3、构造器方式
package com.wry.bean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;@Componentpublic class Reader {private Book book;@Autowiredpublic Reader(Book book){this.book = book;}public void readBook(){book.read();}}Autowired的使用说明
1、默认情况下,如果因找不到合适的bean将会导致autowiring失败抛出异常,可以通过下面的方式避免:
@Componentpublic class Reader {@Autowired(required = false)private Book book;public void readBook(){book.read();}}2、每个类只能有一个构造器被标记为required = true
3、可以注解那些众所周知的解析依赖性接口,比如:BeanFactory、ApplicationContext、Environment、ResourceLoader、ApplicationEventPublisher、MessageSource等。
0 0
- Sprint注入和bean的自动装配以及Autowired的用法
- Spring Bean装配--常用的注入方式和自动装配的配置和实现
- Spring4学习笔记(八):通过注解的方式配置bean和@Autowired 自动装配
- spring的Autowired,Qualifier注解介绍以及自动装配
- 使用@Autowired自动装配bean
- bean的自动装配
- Spring Bean自动装配和注解注入
- Spring Bean的自动装配和资源管理
- Spring Bean的自动装配,注入及后处理器
- 一个和spring整合的依赖注入的servlet,子类可自动装配依赖Bean
- 一个和spring整合的依赖注入的servlet,子类可自动装配依赖Bean
- 使用@Autowired自动装配对象和new对象的区别
- Spring Bean装配--Autowired注解注入说明
- Spring Bean的装配 -- 自动装配
- @autowired自动装配的几种方式
- 基于Spring4的Bean的装配和依赖注入
- [Spring]Bean的自动装配
- # Spring Bean 的自动装配
- JavaScript正则表达式的分组匹配详解
- Struts2配置详解_配置Action
- 单点登录SSO的实现原理
- 判断cpu是不是支持SSE42指令集
- oracle jdbc 分批抓取查询FetchSize(100)
- Sprint注入和bean的自动装配以及Autowired的用法
- 【大数据干货】轻松处理每天2TB的日志数据,支撑运营团队进行大数据分析挖掘,随时洞察用户个性化需求。
- Metaq原理
- RecyclerView源码分析
- 安装并测试Gitweb
- 用SpringMVC搭建文件上传和下载
- mybatis sqlite 配置
- 【LeetCode】从LeetCode中学到的常用Trick
- SQL NOT NULL 约束