Springboot使⽤bean⽅式详解(附代码)
上⼀章节中介绍了springboot创建bean的⼏种⽅式:注解形式(@Controller/@Service/@Component/@Repository)和@Configuration/@Bean组合注解形式;
本章节主要介绍如何在项⽬中使⽤创建的bean。
>范例⼀:通过Bean类、xml配置⽂件创建bean并注⼊到容器中
//创建bean类
public class Computer {
private String name;
private String color;
private Float price;
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getColor(){
return color;
}
public void setColor(String color){
}
public Float getPrice(){
return price;
}
public void setPrice(Float price){
this.price = price;
}
@Override
public String toString(){
return"Computer{"+
"name='"+ name +'\''+
", color='"+ color +'\''+
", price="+ price +
'}';
}
}
<!--------通过l配置⽂件实例化bean并注⼊Spring容器中-------->
<beans>
<bean id="computer"class="com.java.demo.Computer">
<property name="name"value="联想"></property>
<property name="color"value="⿊⾊"></property>
<property name="price"value="6500.45"></property>
</bean>
</beans>
ApplicationContext context =new ClassPathXmlApplicaitonContext("l");
Computer c = Bean("computer",Computer.class);
System.out.println(c);
}
}
>范例⼆:通过bean类、@Configuration/@Bean组合注解实现创建bean并注⼊到容器中
//创建bean类,同范例⼀
public class Computer {
private String name;
private String color;
private Float price;
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getColor(){
return color;
}
public void setColor(String color){
}
public Float getPrice(){
return price;
}
public void setPrice(Float price){
this.price = price;
}
@Override
public String toString(){
return"Computer{"+
"name='"+ name +'\''+
", color='"+ color +'\''+
", price="+ price +
'}';
}
}
//通过该配置类的编写实现创建bean并注⼊到spring容器中
@Configuration
public class BeanConfig{
resource和autowired注解的区别//Bean注解若不带name参数,则默认以⽅法名getComputer为bean的id,⽤于后续获取bean;若带参数则以name参数名⽤于后续获取bean @Bean(name="computer")
public Computer getComputer(){
Computer com =new Computer();
com.setName("联想");
com.setColor("红⾊");
com.setPrice(6500.55);
return com;
}
}
ApplicationContext context =new AnnotationConfigApplicationContext(BeanConfig.class);
//Computer c = Bean(Computer.class)该种⽅式也可以从容器中获取bean,同下
Computer c = Bean("computer",Computer.class);
System.out.println(c);
}
}
>范例三:通过@Component等注解⽅式创建bean并注⼊容器,再通过@AutoWired或@Resource注解实现依赖注⼊,⾃动装配(取出bean)。这是我们在springboot项⽬中最常⽤的使⽤bean的⽅式,前两种使⽤bean的⽅式偏重于原理性和底层,项⽬中这样使⽤的情况不多;话不多说,直接上代码:
//@Service(是@Component的注解的⼦类)注解表⽰当前类对象是⼀个bean,在程序运⾏时会被spring容器扫描到并注⼊到容器中,这⼀步相当于创建bean的过程
@Service
public class ServiceImpl implements Service{
@OVerride
public void print (){
System.out.println("我是实现类");
}
}
//进⾏单元测试,@SpringBootTest注解代表是⼀个单元测试类的程序⼊⼝。
@SpringBootTest
public class DemoApplicationTests {
//@AutoWired注解可以⾃动取出容器中的bean(Service接⼝的实现类的对象),根据类型⾃动装配,此处也可使⽤@Resource注解
@Autowired
private Service service;
@Test
public void testBean(){
service.print();
}
}
>范例四:通过@Configuration和@Bean组合注解创建bean并注⼊容器,再通过@AutoWired或@Resource注解实现依赖注⼊,⾃动装配(取出bean),代码如下:
//组合注解创建bean并注⼊容器,前⾯已经讲过了,不再赘述。
@Configuration
public class BeanConfig{
@Bean
public Computer getComputer(){
Computer computer =new Computer();
computer.setName("macBook");
computer.setBrand("苹果")
computer.setColor("⽩⾊");
computer.setPrice(16000。50f);
return computer;
}
}
//进⾏单元测试,@SpringBootTest注解代表是⼀个单元测试类的程序⼊⼝。
@SpringBootTest
public class DemoApplicationTests {
//@AutoWired注解可以⾃动取出容器中的bean(Service接⼝的实现类的对象),根据类型⾃动装配,此处也可使⽤@Resource注解@Autowired
private Computer computer;
@Test
public void testBean(){
System.out.println(computer);
}
}
//注意:@AutoWired、@Resource要实现⾃动装配(取出bean)的前提是bean对象所属的类要
//被spring容器扫描到,如果扫描不到,容器中就不会注⼊bean,更不⽤说取出bean了,所以主
//程序⼊⼝要放到最外层,这样才能扫描到它的平级及⼦级中的被注解修饰的类;单元测试中,也
//要保证测试程序的主类能扫描到所要测试的被注解修饰的类。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
推荐文章
热门文章
-
随机森林特征选择原理
2024-10-02 -
自动驾驶系统中的随机森林算法解析
2024-10-02 -
随机森林算法及其在生物信息学中的应用
2024-10-02 -
监督学习中的随机森林算法解析(六)
2024-10-02 -
随机森林算法在数据分析中的应用
2024-10-02 -
机器学习——随机森林,RandomForestClassifier参数含义详解
2024-10-02 -
随机森林 的算法
2024-10-02 -
随机森林算法作用
2024-10-02 -
监督学习中的随机森林算法解析(十)
2024-10-02 -
随机森林算法案例
2024-10-02 -
随机森林案例
2024-10-02 -
二分类问题常用的模型
2024-10-02 -
绘制ssd框架训练流程
2024-10-02 -
一种基于信息熵和DTW的多维时间序列相似性度量算法
2024-10-02 -
SVM训练过程范文
2024-10-02 -
如何使用支持向量机进行股票预测与交易分析
2024-10-02 -
二分类交叉熵损失函数binary
2024-10-02 -
tinybert_训练中文文本分类模型_概述说明
2024-10-02 -
基于门控可形变卷积和分层Transformer的图像修复模型及其应用
2024-10-02 -
人工智能开发技术的测试和评估方法
2024-10-02
最新文章
-
基于随机森林的数据分类算法改进
2024-10-02 -
人工智能中的智能识别与分类技术
2024-10-02 -
基于人工智能技术的随机森林算法在医疗数据挖掘中的应用
2024-10-02 -
随机森林回归模型的建模步骤
2024-10-02 -
r语言随机森林预测模型校准曲线
2024-10-02 -
《2024年随机森林算法优化研究》范文
2024-10-02
发表评论