先创建一个 maven 项目
添加 Spring 框架支持(Spring-context/Spring-beans)
配置 pom.xml
org.springframework spring-context 5.2.3.RELEASE org.springframework spring-beans 5.2.3.RELEASE
配置 spring-config.xml
添加如下代码
存储 Bean 分为一下3步:
存储 Bean 之前,先创建 Bean
配置文件 Spring-confing.xml
将创建的 Bean 注册到 Spring 容器中
id 可以不同于 class 里面的类名的,但是要尽量符合规范
相同点:
都可以实现从容器中获取 Bean,都提供了 getBean 的方法
不同点:
- ApplicationContext 属于 BeanFactory 的子类,BeanFacotory 只提供了 基础访问 Bean 的方法,而 ApplicationContext 除了拥有 BeanFactory 的所有功能之外,还提供了更多的方法实现,比如对国际化的支持,资源访问的支持,以及事件和传播等方面的支持
- 从性能来说 二者是不同的,BeanFactory 是按需加载 Bean的,而 ApplicationContext 是饿汉方式,在创建时会将所有的 Bean 都加载起来,以为以后使用
在配置文件中配置扫描路径
- 类注解:
@Controller[控制器] ,@Service[服务], @Repository[仓库 ],@Configuration[配置] ,@Component[组件]
- 方法注解:
@Bean
@Controller[控制器]
@Service[服务]
@Repository[仓库]
@Configuration[配置]
@Component[组件]
注意:当我们使用 bean 和 类型 获取 bean 时,bean的名字 要用小驼峰
目的:让代码可读性提高,能直观的判断当前类的用途
在Spring 框架的设计中,方法注解 @Bean 要配合类注解才能将对象存储到Spring容器中
创建一个 Bean
创建一个 User 对象
tips:这里 获取 Bean 的方式,Bean 的名称 只能是方法名
public class App {public static void main(String[] args) {//1. 先得到上下文对象ApplicationContext context =new ClassPathXmlApplicationContext("spring-config.xml");User user = context.getBean("user1",User.class);System.out.println(user);}
}
@Bean 命名规则
当没有设置 name 属性时,那么 Bean 默认的名称是
方法名
,当设置了 name 属性之后,只能通过重命名的 name 属性对应的值来获取
,也就是说重命名之后,再使用方法名就获取不到 Bean 对象
当 UserBean 类中有多个对象时,可以通过设置 name 属性给 Bean 对象进行重命名操作,如下代码:
通过使用 Bean 里面的 name 就可以获取到对象
前面我们讲的 五大类注解和方法注解都是将 对象存储到 Spirng 当中,而对象的注入(对象的装配)是把对象从 Spring 当中 取出来
对象注入,我们提供了三种注入的方式:
属性注入:
写法简单,但是通用性不好,它只能运行在 IoC 容器下,如果是非 IoC 容器就会出现问题
Setter注入:
早期 Spring 版本推荐的写法,Setter 注入的通用性没有构造方法注入通用
构造方法注入:
通用性更好,他能确保在使用注入对象之前,此注入对象一定初始化过了,当构造方法注入参数过多时,此时开发者就要检查自己所写代码是否符合单一设计原则的规范了,此注入方式也是 Spring 后期版本中推荐的注入方式
注意事项:@Resource 支持属性注入和 Setter 注入,但不支持构造方法注入
上一篇:【audio】TM8211
下一篇:得物视频编辑工具优化全指南