2025年java spring入门(javabean spring)

java spring入门(javabean spring)div id navCategory div javaBean 要求所有属性为私有 该类必须有一个公共无参构造函数 private 属性必须提供公共的 Getter setter 给外部访问 SpringBean 是受 Spring 管理的对象 所有能受 Spring 管理的对象都可以是 SpringBean li 用处不同 li

大家好,我是讯享网,很高兴认识大家。



 <div id="navCategory"></div> 

讯享网

javaBean要求所有属性为私有,该类必须有一个公共无参构造函数,private属性必须提供公共的Getter setter给外部访问

SpringBean是受Spring管理的对象,所有能受Spring管理的对象都可以是SpringBean

    讯享网<li>用处不同:传统javabean更多地作为值传递参数,而spring中的bean用处几乎无处不在,任何组件都可以被称为bean</li> <li>写法不同:传统javabean作为值对象,要求每个属性都提供getter和setter方法;但spring中的bean只需为接受设值注入的属性提供setter方法</li> 

生命周期不同:传统javabean作为值对象传递,不接受任何容器管理其生命周期;spring中的bean有spring管理其生命周期行为

准备工作:引入Spring依赖包

通过ClassPathXmlApplicationContext需要指定configLocation,所有我们现在resources目录下新建一个Spring.xml文件

同时相应对象重写toString方法,便于更好观察user1和user2

运行测试类

运行结果如下

User{name='zhangsan'}

User{name='lisi'}

也是通过BeanDefinition实现

*@Bean@Component@Service@Controller都可以;一般@Service用于Service层,@Controller用于Controller层,此处以@Bean为例

新建一个Config类,并给User打上@Bean标签

通过AnnotationConfigApplicationContext获取bean,并打印bean对象

运行结果

User{name='null'}

运行结果

User{name='null'}


讯享网

4.1通过FactoryBean与注解方式

首先新建一个Person类

然后新建一个PersonFactoryBean类,并实现FactoryBean接口,重写其方法,为其打上@component注解, 此处和在Person类上打注解是同一效果

其次添加一个Config类打上@ComponentScan("org.example.bean"),目的是为了扫描包下的注解

最后通过AnnotationConfigApplicationContext获取Bean

运行结果

org.example.bean.Person@28ac3dc3

4.2通过Factory和BeanDefinition

1.同4.1一样新建一个Person类

2.同4.1一样新建一个PersonFactoryBean类,实现FactoryBean接口,但是不打注解

3.通过BeanDefinition获取对象

此处和注解生成的差别在于通过BeanDefinition注册的会生成两个Bean对象,一个是person对应的类型是Person,另一个是&person对应的类型是PersonFactoryBean,通过下面代码的getBean方法可以看出来!!

运行结果如下

org.example.bean.PersonFactoryBean@3aeaafa6

org.example.bean.Person@76a3e297

FactoryBean接口提供三个方法,但是我们重写了两个方法,这是因为另外一个方法是默认实现了的

FactoryBean接口方法如下:

bean的注入方式本文只是提供了多种api,很多情况下底层其实用的都是一样的东西,只是提供了不同的使用方式,具体可以通过源码查看。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

小讯
上一篇 2025-06-09 14:23
下一篇 2025-05-30 20:19

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/187500.html