Java:
1.8
javaMaven:
3
springSpringFramework版本以及各组件成员:
5.1.1.RELEASE
函数
- spring-context
- spring-core
- spring-beans
@Autowired 注释对在哪里和如何完成自动链接提供了更多的细微的控制。ui
byName
装配以及@Autowired(required=false)
, 这代表依赖是非必要的. (默认必要)this
@Autowried
(以省略setter)你能够在属性中使用 @Autowired 注释来除去 setter 方法。当时使用 为自动链接属性传递的时候,Spring 会将这些传递过来的值或者引用自动分配给那些属性。code
Bean.java
(并非严格意义上的JavaBean):xml
package noioo; public class Bean { public void sayHelloWorld(){ System.out.println("Hello World"); } }
BeanUser.java
(Bean的使用者):get
package noioo; import org.springframework.beans.factory.annotation.Autowired; public class BeanUser { @Autowired private Bean bean; public Bean getBean() { return bean; } public void useBean(){ bean.sayHelloWorld(); } }
spring-beans.xml
(配置文件)it
<?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.xsd"> <context:annotation-config/> <bean id="beanUser" class="noioo.BeanUser"> </bean> <bean id="bean" class="noioo.Bean"> </bean> </beans>
Runner.java
- 执行者io
package noioo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Runner { public static void main(String[] args){ ApplicationContext context = new ClassPathXmlApplicationContext("spring-beans.xml"); BeanUser beanUser = (BeanUser)context.getBean("beanUser"); beanUser.useBean(); } }
执行结果
Hello World Process finished with exit code 0
@Autowired
(实现byName
)你能够在 XML 文件中的 setter 方法中使用 @Autowired 注释来除去 元素。当 Spring遇到一个在 setter 方法中使用的 @Autowired 注释,它会在方法中视图执行 byType 自动链接。
❗不修改上面示例中的内容有:
Bean.java
spring-beans.xml
MainRunner.java
BeanUser.java
修改以下:
package noioo; import org.springframework.beans.factory.annotation.Autowired; public class BeanUser { private Bean bean; @Autowired // [至关于byName]将在配置文件中查找名为bean的SpringBean来进行注入. public void setBean(Bean bean) { this.bean = bean; } public Bean getBean() { return bean; } public void useBean(){ bean.sayHelloWorld(); } }
执行结果
Hello World Process finished with exit code 0
@Autowired
(构造注入)你也能够在构造函数中使用 @Autowired。一个构造函数 @Autowired 说明当建立 bean 时,即便在 XML 文件中没有使用 元素配置 bean ,构造函数也会被自动链接。
❗不修改上面示例中的内容有:
Bean.java
spring-beans.xml
MainRunner.java
BeanUser.java
修改成构造注入并添加@Autowired
:
package noioo; import org.springframework.beans.factory.annotation.Autowired; public class BeanUser { private Bean bean; @Autowired public BeanUser(Bean bean){ this.bean = bean; } public Bean getBean() { return bean; } public void useBean(){ bean.sayHelloWorld(); } }
执行结果
Hello World Process finished with exit code 0