谁家做电商商城网站便宜,平湖手机网站设计,做网站运营的职业生涯规划,网站建设部分费用会计科目1.主动获取Bean spring项目在需要时#xff0c;会自动从IOC容器中获取需要的Bean
我们也可以自己主动的得到Bean对象
#xff08;1#xff09;获取bean对象#xff0c;首先获取SpringIOC对象
private ApplicationContext applicationContext //IOC容器对象
(2 )方法…1.主动获取Bean spring项目在需要时会自动从IOC容器中获取需要的Bean
我们也可以自己主动的得到Bean对象
1获取bean对象首先获取SpringIOC对象
private ApplicationContext applicationContext //IOC容器对象
(2 )方法1根据名称获取bean
创建bean对象没有指定名称时默认就是 bean的名称 就是 类名的首字母小写
直接获取得到的是Object对象需要强转 三次运行都只得到一个Bean说明Bean对象默认是单例的 2.bean的作用域知道这两种就行了
单例的容器内只有一个单例的Bean
非单例的每次使用都创建新的bean
下面三种只在web环境中才有不重要 可以通过Lazy来延迟加载bean只有第一次使用时才会初始化这个bean。使用不多 3.第三方bean的配置 我们声明自己的bean对象是用这几个注解自己的bean对象就是自己写的类将自己的bean对象交给IOC容器管理加上这几个注解及其衍生注解
场景
dem4j是用来解析xml文件的
我们想要用的话第一步先在pom中加入这个dom4j这个依赖 第二步可以在类中new一个SAXReader对象然后调用方法就可以使用了
但是我们都是用Spring框架了这样使用太麻烦了我们可以把SAXReader交给IOC容器去管理每次用的时候直接注入就好了。但是发现SAXReader类并没有加上component注解生成bean对象且是只读文件我们也加不了 所以我们使用第三方的bean对象就不能像之前的做法直接在类上加component注解生成bean对象了
解决方法使用第三方的bean
在启动类上加上一个方法方法名就是第三方类交给IOC管理的bean对象的bean的默认名称方法返回值这个类的对象交给IOC容器管理成为bean对象。
这个方法必须加上Bean注解
这样在其他地方使用这个对象使用Autowired注入进来就可以了 和main方法是平行的 但是呢如果都加到启动类中启动类就变复杂了要保证启动类的纯洁不建议加在启动类中写多余的代码 我们建议在配置类Configration中声明这样一个类集中管理第三方的bean注入。
在配置类上加上一个方法方法名是随意的方法返回值这个类的对象交给IOC容器管理成为bean对象。如果有多个第三方的bean再定义一个方法重复这个过程就可以了 验证方法名就是 IOC容器中bean的名称 测试通过主动获取bean对象方法通过bean的名称获取bean对象看看能不能获取到
获取到了说明 方法名就是 IOC容器中bean的名称 注入第三方bean的时候如何解决依赖注入的问题写到形参里就可以了
场景如果我们在注入第三方bean(SAXReader)的时候SAXReader还依赖DeptService的bean怎么办
只需要把DeptService放到形参的位置spring就会自动注入DeptService的bean以帮助我们注入第三方bean(SAXReader)
不需要Autowired手动装配 总结
1如果是自己定义的类想交给IOC容器管理就是用Component注解及其衍生注解
2如果是引入第三方的类想交给IOC容器管理并且源码中没有加Component注解源码文件又只读不可写我们也加不了就要使用Bean注解放到配置类中交给IOC容器管理