在spring中主动获取springContiner容器
(主动获取比较笨拙,但有助于理解底层容器的理念)
@Service 常用于业务组件
@Repository 常用于Dao层
@Configuration 标记的类是配置类
@ComponentScan(“包”) 指定哪个包,就扫描哪个包下的注解并识别。
@Autowired Bean的自动装配,可以标注在类的属性、方法及构造函数上。
@Component 把普通类标记为Bean,加入到容器里,并且是单例模式。
@Bean 定义一个Bean对象,加入到Spring容器里
@Order(数字) 容器加载Bean的优先级,数字越小优先级越高
1、实现接口
2、实现接口里的方法
3、ApplicationContext是继承了beanFactory的接口 即为容器
spring会自动扫描指定包里的Bean并把它们装入到容器中
Bean管理
容器统一管理降低耦合度
获取Bean调用容器的getBean方法
1、 传入相应的类型.class
2、通过自定义的名字获取 自定义名字:@Reposity(”") 需要类型强制转换 或者传入的时候传入类型.class
@Primary 注解 在有多个实现类的Bean时优先选择此Bean
Spring管理对象的初始化
添加初始化方法 @PostConstruct 注解表示在构造器之后创建
Spring管理对象的销毁
@PreDestroy 表示在对象销毁之前进行调用 可以进行内存清理之类的工作
Bean是单例的只被实例化一次
使用@Scope(“prototype”)可以实现创建多个实例 默认一个
装配第三方Bean
1、写一个配置类
2、增加@Configuration注解
3、方法前增加@Bean注解
4、方法名就是Bean的名字
测试获取Bean 格式化当前的日期
依赖注入
在属性前加入注解**@Autowired** Spirng就会自动把相应的Bean注入到属性中
@Qualfier 会匹配符合名字的Bean
在方法中直接调用即可;
实际开发应用
Controller处理浏览器的请求 调用Service处理当前的业务 Service调用Dao层访问数据库
1、给Service层添加@Service注解 交给容器管理
2、先注入相应层的Bean 使用变量的方式 添加@Autowired注解
3、然后在方法里使用变量调用相应的方法即可
4、Controller同上
vice层添加@Service注解 交给容器管理
2、先注入相应层的Bean 使用变量的方式 添加@Autowired注解
3、然后在方法里使用变量调用相应的方法即可
4、Controller同上