XML配置续&annotation注解
- SpringBoot:分布式微框架,把一个大项目分解成若干小项目,远程相互调用
- 命名空间:namespaces(在applicationContext.xml页面左下角 ,勾选响应的命名空间即可使用)
- Util Schema:这个命名空间包含了一些定义集合对象的标记
- util:list 标签(一个 list 供多个对象复用)
- util:map 等
- p 命名空间:简化注入属性操作
- 自动装配:autowire 开关
- 根据type:匹配唯一的一个,多了报错(不过日常开发时不常见多个同类型)
- 根据name
- 所有bean都自动装配:在beans里打开如图开关,设置default为byType 或 byName
- scope:代表作用域,共有四个值
- singleton:单例(仅创建一个对象;可同时指定lazy-init属性,true为getbean时创建,默认false为创建工厂时创建)
- prototype:原型(每次创建一个新对象)
- request:一次请求内仅创建一个对象
- session:一次会话期间仅创建一个对象
- 常用singleton:无状态bean,无需创建多个对象
- context:placeholder:可以加载属性文件信息
- SpEL
- spring的表达式语言
- 作用:可以在配置文件中通过在value中使用 #{ } 给属性动态注入数值
- 通过SpEL可以访问其他对象的属性,方法及静态方法;同时还可以使用三目运算符和正则表达式
- 题外话:Math取整方法
- //取整,floor截断后面的浮点数,输出为2 System.out.println(Math.floor(2.5));
- //ceil,截断后面的浮点数后+1,输出为3 System.out.println(Math.ceil(2.1));
- //round四舍五入 System.out.println(Math.round(2.36));
- Spring(IOC)容器创建 bean 的生命周期
- 实例化
- 注入属性值(setXxx方法)
- init() 可配置
- 使用
- destroy() 可配置,prototype 无此过程
- 利用工厂创建产品
- 不是工厂模式来创建对象也可用上图的方法
- 只要用静态方法创建对象即可用上图中简单工厂的方法
- 只要用对象的普通方法即可用上图中工厂方法的方法
- 只要用new直接创建对象即可直接用<bean id="" class=""> <property> 的方法
- 不是工厂模式来创建对象也可用上图的方法
- Spring 支持的配置方式
- xml(以上所述都是xml)
- annotation
- java 配置(spring4)
- 使用 annotation 方式定义一个 bean 可以使用以下四种类型
- @Component
- @Repository(dao)
- @Service(业务层,service)
- @Controller(控制层,controller)
- 这四个类型的 Annotation 的作用完全一样,只是语义不同;
- 如果使用 Annotation 方法定义 bean,还需对 bean 进行扫描
- context:component-scan 标记:
- 扫描dao包里(包括其子包下)的所有类:<context:component-scan base-package="com.oracle.dao"></context:component-scan>
- 若需指定多个包,用 " , " 分隔开
- 若不想扫描子包,设参数 resource-pattern="*.class"
- 标记中还可使用两个子标记进行过滤:type一般为注解,expression直接复制使用该注解时所导的包名
- include-filter 只包含
- exclude-filter 排除
- include 需设置父标记参数 use-default-filter 为 false,否则不起作用
- context:component-scan 标记:
- Spring注入属性的注解
- @Autowired:可以自动注入;先根据 byType,若有多个同类型 bean 则根据 byName 进行装配;此注解是Spring提供的注解
- @Resource
- @Inject