会网站开发学UI,目前中国最火的论坛,静态网页设计实训报告,青岛网络公司老板是谁获取bean
默认情况下#xff0c;在Spring项目启动时#xff0c;会把bean都创建好#xff08;但是还会受到作用域及延迟初始化的影响#xff09;放在IOC容器中#xff0c;如果想主动获取这些bean#xff0c;可以通过如下方式 根据name获取bean Object getBean#xff08…获取bean
默认情况下在Spring项目启动时会把bean都创建好但是还会受到作用域及延迟初始化的影响放在IOC容器中如果想主动获取这些bean可以通过如下方式 根据name获取bean Object getBeanString name 根据类型获取bean T T getBeanClassT requiredType 根据name以及类型获取bean T T getBean(String name,ClassT requiredType)
具体实现代码及运行结果如下
具体代码 AutowiredApplicationContext applicationContext; // 自动注入IOC容器对象Testpublic void GetBean() {// 根据bean的名称获取DeptController bean1 (DeptController) applicationContext.getBean(deptController);System.out.println(bean1);// 根据bean的类型获取DeptController bean2 applicationContext.getBean(DeptController.class);System.out.println(bean2);// 根据bean的名称以及类型获取DeptController bean3 applicationContext.getBean(deptController, DeptController.class);System.out.println(bean3);}
运行结果 在SpringBoot项目中设置bean对象
在Spring Boot中可以使用注解来定义和配置Bean。常用的注解包括
Component用于标识一个普通的Bean类。Service用于标识一个服务类通常用于业务逻辑的处理。Repository用于标识一个数据访问类通常用于数据库操作。Controller用于标识一个控制器类通常用于处理HTTP请求。
除了以上常用的注解外还有一些特殊用途的注解如
Configuration用于标识一个配置类通常用于配置Bean的创建和依赖关系。Autowired用于自动注入依赖的Bean。Value用于注入配置属性的值。
通过使用这些注解可以将普通的Java类转化为Spring Bean使其由Spring容器进行管理。Spring容器会负责创建、初始化和销毁这些Bean并处理它们之间的依赖关系。在应用程序中可以通过注入Bean来使用其提供的功能和服务。
bean作用域
Spring支持5种作用域后三种在web环境才生效 作用域说明singleton容器内同名称的bean只有一个实例单例默认prototype每次使用该bean时会创建新的实例非单例request每个全球范围内会创建新的实例web环境下了解session每个会话范围内会创建新的实例web环境下了解application每个应用范围内会创建新的实例web环境下了解 可以通过Scope注解来进行配置作用域
注意事项 默认singleton的bean在容器启动时被创建可以使用Lazy注解来延迟初始化延迟到第一次使用时才会创建该bean对象。 prototype的bean每一次使用该bean时都会创建一个新的实例。 实际开发过程中绝大部分的bean是单例的也就是说绝大部分bean不需要配置scope属性。
具体代码及效果
scope为默认值singleton Testpublic void GetBean() {// 根据bean的名称获取for (int i 1; i 5; i) {DeptController bean1 (DeptController) applicationContext.getBean(deptController);System.out.println(bean1);}
} 运行结果都是同一个bean对象 scope为prototype 运行结果每一次都会创建一个新的实例对象
第三方bean
对于第三方的类我们无法在其代码中加入注解来将其添加到IOC容器中去。如果要管理的bean来自第三方不是自定义的是无法使用Component及其衍生注解来说明bean的就需要用到Bean注解通过Bean注解的name/value属性指定bean名称如果未指定默认是方法名。
具体实现
在SpringBoot项目的启动类中加上一个方法在该方法中创建第三方类的对象并且返回该对象并且在该方法上加入Bean注解但是这种方式不建议 public class TliasApplication {public static void main(String[] args) {SpringApplication.run(TliasApplication.class, args);}Bean // todo 将发放返回值交给IOC容器管理称为IOC容器的bean对象public SAXReader saxReader() {return new SAXReader();}
}若要管理第三方的bean对象建议对这些bean进行集中分类配置可以通过Configuration注解声明一个配置类。当应用程序启动时Spring Boot会自动扫描并加载所有带有特定注解的配置类 具体实现如下 Configuration
public class BeanConfig {Bean // todo 将发放返回值交给IOC容器管理称为IOC容器的bean对象public SAXReader saxReader() {return new SAXReader();}
} 如果在配置第三方类时要进行依赖注入的话就可以在创建的方法中设置要注入的对象类型及其名称然后Spring容器会继续自动装配 具体代码 Configuration
public class BeanConfig {Bean // todo 将发放返回值交给IOC容器管理称为IOC容器的bean对象public SAXReader saxReader(DeptService deptService) {return new SAXReader();}
}
注意事项
通过Bean注解的name/value属性可以声明bean的名称如果不指定默认bean的名称就是方法名如果第三方bean需要依赖其它的bean对象直接在bean定义方法中设置形参即可容器会根据类型自动装配、项目中自定义的使用Component及其衍生注解项目中第三方引入的使用Bean注解