Spring框架创建以及使用Bean的方式

1.创建Bean

1.1使用@Configuration与@Bean注解 

使用Spring框架创建简单的对象(不使用SpringBoot)

需要使用的注解:

@Configuration  标志这是个配置类,启动项目后,会根据这个注解找到当前类添加到spring容器中管理

@Bean 

标识在启动spring时加载@Bean的方法,方法名即bean的id,返回值是spring创建的对象

实现思想:IOC(控制反转)

需求:通过Spring框架获创建简单对象

项目结构

步骤

1.创建POJO类Demo

public class Demo {
    @Override
    public String toString() {
        return "hello world";
    }
}

2.创建配置类

@Configuration/*配置文件*/
public class Config {

    @Bean/*标识在启动spring时加载@Bean的方法*/
    /*方法名即bean的id 返回值是spring创建的对象*/
    public Demo bean(){
        return new Demo();
    }
}

 3.配置pom文件,找spring-context的坐标

https://mvnrepository.com/  此处是下载坐标网址

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.3</version>
</dependency>

 4.创建测试类测试

public class Test {
    public static void main(String[] args) {
//初始化spring容器
        AnnotationConfigApplicationContext c=
                new AnnotationConfigApplicationContext(Config.class);

        Demo demo=c.getBean("bean", Demo.class);
        System.out.println(demo);
    }
}

打印出了”hello world“ 说明,Spring确实自动创建了对象

如果要修改BeanID,可以使用@Baen的参数修改

用法:如果根据类型获取对象失败时,可以使用BeanID

.getBean("beanId",DemoBean.class);

1.2.组件扫描功能

使用注解:

@Component 添加到pojo类  例如DemoBean类

@ComponentScan(basePackages="   ")  扫描组件所在的包

使用步骤:

使用@Component声明类 并实现序列化接口

Spring在组件扫描时,会找到@Component标注的类,创建该类的对象,Bean 的id为类名 首字母小写

@Component
public class DemoBean implements Serializable {
    @Override
    public String toString() {
        return "DemoUser";
    }
}

配置Cofig文件

@Configuration/*配置文件*/
@ComponentScan(basePackages = "cn.tedu.demo")
public class Config {

    @Bean/*标识在启动spring时加载@Bean的方法*/
    /*方法名即bean的id 返回值是spring创建的对象*/
    public Demo bean(){
        return new Demo();
    }

}

测试组件扫描

@Test/*测试组件扫描*/
    public void demoBean(){
        DemoBean demoBean= a.getBean("demoBean",DemoBean.class);
        System.out.println(demoBean);
    }

 

 

 

 

总结spring两种创建简单对象方式

1.使用@Configuration、@Bean  方法名为id 也可以自己设置 

2.使用@Component  、@ComponentScan(basePackages = "cn.tedu.demo")  id为类名首字母小写

 2.使用Bean的方式

2.1 Autowired注入


将注解@Autowired或者@Resource添加到成员变量上,即表示这个成员变量会由Spring容器注入对应的Bean对象

@Autowired
private ConfigDemoBean configDemoBean;

2.2 Setter方法


和前面其实也差不多,只不过注解放在了setter方法上

@Autowired
private void setFacDemoBean(FacDemoBean facDemoBean) {
    this.facDemoBean = facDemoBean;
}



2.3 构造方法


在构造方法中传入Bean对象来初始化

public class DemoController {
    private DemoBean DemoBean;
    public DemoController(DemoBean demoBean) {
        this.DemoBean = demoBean;
    }
}

 根据Bean类型匹配

 

小明使用Pen{name='钢笔'}写字

 根据Bean的id匹配

 

小明使用Pen{name='钢笔'}写字

 Bean的类型与id偶不匹配

 解决方法:

使用注解@Qualifier("myPen")指定Bean的id

小明使用Pen{name='钢笔'}写字

3.getBeanNamesForType()

作用:根据类名获取全部BeanID(Bean的name)

@Test
    public void test1(){
//        getBeanNamesForType 根据类名获取全部BeanID(Bean的name)
        String[] names=a.getBeanNamesForType(DemoBean.class);
        for(String ids:names){
            System.out.println(ids);
        }
    }

以上基于SpringBoot项目

如果是Maven项目

创建Bean对象有两种方式:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值