文章目录
Spring Annotaiton Config Bean
Spring.io:annotaition
Spring IoC之DI实现XML配置形式]
如何注解的方式IoC
扫描注解: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.xsd
">
<context:component-scan base-package="com.test.springdome02"></context:component-scan>
<bean id="user" class="com.test.springdome02.pojo.User">
<property name="uid" value="100"></property>
<property name="uname" value="小张"></property>
</bean>
</beans>
import org.springframework.stereotype.Component;
@Component
public class User {
private String uid;
private String uname;
public void setUid(String uid) {
this.uid = uid;
}
public void setUname(String uname) {
this.uname = uname;
}
@Override
public String toString() {
return "User{" +
"uid='" + uid + '\'' +
", uname='" + uname + '\'' +
'}';
}
}
测试方法
public class Test01 {
private ApplicationContext ac = new ClassPathXmlApplicationContext("applicationcontext.xml");
@Test
public void test00(){
System.out.println(ac.getBean("user", User.class));
}
}
注解的方式将注入bean
Component、Service、Repository、Controller
这四个注解的含义相同,被标注的类会被spring注入进spring容器中
//以Component为例
@Component
public class User{
@Override
public String toString() {
return "this is User";
}
}
测试代码
System.out.println(ac.getBean("user", User.class));
四个注解的区别
- Controller一般用于控制层类上
- service 一般用于业务处理层类上
- Repository一般用于数据持久层类上
- Component一般用于不是以上三种情况
注解的方式注入属性
Value注解
@Component
public class User {
@Value("101")
private String uid;
@Value("小明")
private String uname;
@Override
public String toString() {
return "User{" +
"uid='" + uid + '\'' +
", uname='" + uname + '\'' +
", book=" + book +
'}';
}
}
测试代码
System.out.println(ac.getBean("user", User.class));
Spring Autowired 自动注入注解
@Component
public class User {
@Value("103")
private String uid;
@Value("小美")
private String uname;
@Autowired
private Book book;
@Override
public String toString() {
return "User{" +
"uid='" + uid + '\'' +
", uname='" + uname + '\'' +
", book=" + book +
'}';
}
}
//Book接口
public interface Book {}
//Book接口的实现类
import org.springframework.stereotype.Component;
@Component
public class JavaBook implements Book{
@Override
public String toString() {
return "JavaBook{}";
}
}
测试代码
System.out.println(ac.getBean("user", User.class));
//多加一个Book的实现类
@Component
public class SpringBook implements Book{
@Override
public String toString() {
return "SpringBook{}";
}
}
**注意:**如果多了一个实现类,并且也注入时,会报Book存在多个bean,spring不知道使用哪一个注入属性,此时需要
Qualifier
注解
Qualifier注解
指定需要注入的对象,此时需要对Component类型的对象,添加value属性(指明生成bean的id)
注入类
@Component(value = "spring")
public class SpringBook implements Book{
@Override
public String toString() {
return "SpringBook{}";
}
}
被注入类User
@Autowired
//添加注解
@Qualifier("spring")
private Book book;
给方法注入对象类型参数
修改User类
@Component
public class User {
@Value("103")
private String uid;
@Value("小美")
private String uname;
private Book book;
@Autowired
@Qualifier("javaBook")
public void setBook(Book book) {
this.book = book;
}
@Override
public String toString() {
return "User{" +
"uid='" + uid + '\'' +
", uname='" + uname + '\'' +
", javaBook=" + book +
'}';
}
}
JavaBook类
@Component()
public class JavaBook implements Book{
@Value("101")
private int bid;
@Value("java")
private String bname;
@Override
public String toString() {
return "JavaBook{" +
"bid=" + bid +
", bname='" + bname + '\'' +
'}';
}
}
测试类
@Test
public void test05(){
AnnotationConfigApplicationContext acac = new AnnotationConfigApplicationContext(SpringConfig.class);
System.out.println(acac.getBean("user",User.class));
}
jdk Resource自动注入注解
import javax.annotation.Resource;
@Component
public class User {
@Value("103")
private String uid;
@Value("小美")
private String uname;
@Resource()
private Book book;
@Override
public String toString() {
return "User{" +
"uid='" + uid + '\'' +
", uname='" + uname + '\'' +
", book=" + book +
'}';
}
}
测试代码
System.out.println(ac.getBean("user", User.class));
扫描注解:Java配置形式
@ComponentScan(value = "com.test.springdome02")
public class SpringConfig {
}
@Component
public class User {
@Value("102")
private String uid;
@Value("小明")
private String uname;
@Autowired
private Book book;
@Override
public String toString() {
return "User{" +
"uid='" + uid + '\'' +
", uname='" + uname + '\'' +
", book=" + book +
'}';
}
}
@Test
public void test02(){
AnnotationConfigApplicationContext acac = new AnnotationConfigApplicationContext(SpringConfig.class);
System.out.println(acac.getBean("user", User.class));
}
其他方式
持续更新
更新
- 2022/1/3
结语
你好!^ _ ^ 谢谢你能看到这里
如果你对文章类容有不同看发或文章类容存在错误,请在下方评论处指出,谢谢^ _ ^
你好!如果文章符合你的胃口,你是否愿意点个赞呢?
你好!如果文章对你有帮助,你不妨分享出去,让更多人成长!
如果文章让你喜欢,不妨点个关注交个朋友,一起共同学习!
谢谢,你的点赞,关注,分享是对我写文章不小的动力!!!