Spring5 Java代码装配Bean
Posted 冰点IT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring5 Java代码装配Bean相关的知识,希望对你有一定的参考价值。
接着上次自动化装配Bean,这次我们来探讨Java代码装配Bean。一般情况下Spring提供的自动装配Bean功能已经能满足绝大多数场景的需求,但是如果我们需要整合第三方框架,这个时候是无法使用@Component和@Autowired注解进行自动装配的。那么这种情况下,我们只能选择Java代码或者XML的显式配置。
1、Java代码装配Bean
1.1、创建一个配置类JavaConfigBean
public class JavaConfigBean {
}
@Configuration注解表明这个类是一个配置类,该类包含有Spring应用上下文中如何创建Bean的引导。
1.2、声明一个简单的Bean
public class Blog {
public void sayHello() {
System.out.println("***************hello world!****************");
}
}
public class User {
public void getUser() {
System.out.println("*********我是icypt************");
}
}
这两个类都是简单的Java类,没有做任何个性化的处理,那么如何来通过Java代码将其声明成一个Bean交由Spring管理呢?
public class JavaConfigBean {
public Blog get Blog () {
return new Blog ();
}
}
@Bean:此注解会告诉Spring将注册方法返回的实例做为一个Bean注册到Spring容器中,默认情况下BeanID为注册方法名。
那么如何自定义BeanID呢?
"blogUser") (
public User getUser() {
return new User();
}
此时我们定义的User这个Bean的ID就是“blogUser”。
编写测试类
public class TestJavaConfigBean {
private static AnnotationConfigApplicationContext acac = new
AnnotationConfigApplicationContext(JavaConfigBean.class);
public void createBean() {
Blog blog = acac.getBean("getBlog", Blog.class);
blog.sayHello();
User user = acac.getBean("blogUser", User.class);
user.getUser();
}
}
运行结果
14:07:40,691 DEBUG main support.DefaultListableBeanFactory:213 - Creating shared instance of singleton bean 'getBlog'
14:07:40,727 DEBUG main support.DefaultListableBeanFactory:213 - Creating shared instance of singleton bean 'blogUser'
***************hello world!****************
*********我是icypt************
运行结果表明我们已经通过Java代码成功的声明了两个bean并完成了方法调用。
1.3、使用Java代码配置完成依赖注入
以上的demo只是完成了一个简单Java类的Bean声明,但是在实际开发中,由于其业务的复杂性,一个Bean不足以支撑起整个业务功能,通常情况下都是有各个Bean相互协作共同来完成,下面我们来探讨如何使用Java代码配置完成依赖注入。
public class Blog {
private User user;
public Blog() {}
public Blog(User user) {
this.user = user;
}
public void setUser(User user) {
this.user = user;
}
public void sayHello() {
System.out.println("***************hello world!****************");
}
public void getUser() {
user.getUser();
}
}
可以看出博客这个类需要依赖我们的用户类,下面我们来看Java代码配置时依赖注入的几中方式。
public class JavaConfigBean {
public Blog getBlog() {
return new Blog();
}
"blogUser") (
public User getUser() {
return new User();
}
//通过构造方法注入方式1
public Blog conBlog() {
return new Blog(getUser());
}
//通过构造方法注入方式2,常用
public Blog conBlogParams(User blogUser) {
return new Blog(blogUser);
}
//通过Setter方法注入方式1
public Blog setBlog() {
Blog blog = new Blog();
blog.setUser(getUser());
return blog;
}
//通过Setter方法注入方式2,常用
public Blog setBlogParams(User user) {
Blog blog = new Blog();
blog.setUser(user);
return blog;
}
}
上面这段代码展示了我们在开发中常用的两种依赖注入方式,要么基于Setter方法要么基于Construct方法,需要说明的是在以上配置类中使用getUser()时,并不是真正意义上创建了一个User实例,而是获得了这个Bean的ID,因为在Spring中每个Bean默认都是单例的,只需要在装配时实例化一次,而后传递其引用完成依赖注入,由于比较简单就不贴测试代码了。
关注我
冰点IT,探索最新开发技术,记录追求梦想的点点滴滴!
长按二维码,或点击最上方蓝色的 冰点IT 关注我,您的关注是对我最好的鼓励!
以上是关于Spring5 Java代码装配Bean的主要内容,如果未能解决你的问题,请参考以下文章