2022-9-20 Spring学习笔记
1.Spring
Spring框架是Java应用最广泛的框架,成功来源于理念,而不是技术本身
- IOC:控制反转
- AOP:面向切面编程
- DI:依赖注入
非侵入式设计:无需继承框架提供的任何一个类,更换框架,代码基本上不需要大改。
1.1 JavaBean
springbean是JavaBean的扩展
- 现在的JavaBean作为对象,要求每个属性提供set,get方法。
- spring的bean只需要为接受设置的值的注入提供set方法。
1.2 Spring的优势
- 低侵入/低耦合
- 声明式事务(基于AOP)
- 方便继承其他的框架
- 提供了JavaWEB三层的每一层的解决方案
1.3 将对象放入IOC容器
配置类
把对象放进容器中,对象一旦放入容器中,这个对象在我当前的项目中就可以共享,而且默认还是单例的
<!--
id:这个对象在IOC容器中的唯一标识
class:要放到spring的IOC容器的全类名
-->
<bean id="address" class="com.jsoft.entity.Address" ></bean>
赋值的方法
-
根据参数名字赋值
-
<constructor-arg name="name" value="哇哈哈"></constructor-arg>
-
-
根据参数索引赋值
-
<constructor-arg index="0" value="哇哈哈"></constructor-arg>
-
-
根据参数类型赋值
-
<constructor-arg type="java.lang.String" value="哇哈哈"></constructor-arg>
-
-
根据set方法赋值
-
<property name="name" value="哇哈哈"></property>
-
必须有set方法
-
根据不同类型的赋值
-
类
-
<!-- 类对象 ref:依赖当使用ref属性,依赖于当前容器中已存在的bean,进行属性注入--> <property name="address" ref="address"/>
-
-
数组
-
<property name="hobbies"> <array value-type="java.lang.String"> <value>足球</value> <value>篮球</value> </array> </property>
-
-
List集合
-
<property name="duties"> <list value-type="java.lang.String"> <value>球球</value> <value>猫猫</value> </list> </property>
-
-
Set集合
-
<property name="carts"> <set value-type="java.lang.String"> <value>韭菜</value> <value>花生米</value> </set> </property>
-
-
Map集合
-
<property name="map"> <map key-type="java.lang.String" value-type="java.lang.String"> <entry key="父亲" value="马云"></entry> <entry key="儿子" value="赖"></entry> </map> </property>
-
-
properties属性
-
<property name="properties"> <props> <prop key="阿里版本">扫地僧</prop> </props> </property>
-
作用域
scope:定义bean的作用域
自动装配
autowire:根据指定的策略,在IOC容器中匹配某一个bean,自动为指定的bean中所依赖的类类型或接口类
型属性赋值
-
开启自动装配注解
-
<!-- base-package:这个包下的类自动装配--> <context:component-scan base-package="com.jsoft.entity"></context:component-scan>
-
-
自动装配的注解
-
@Autowired @Qualifier("bean的id") @Resource -- 推荐
-
@Resource注解的依赖
-
<dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.2</version> </dependency>
-
-
注解
- @Component
- (和@Service和@Repository)用于自动检测和使用类路径扫描自动配置bean
- @Bean
- 用于显式声明单个bean,而不是让Spring像上面那样自动执行它。它将bean的声明与类定义分离,并允许您精确地创建和配置bean。
- @Bean则常和@Configuration注解搭配使用,都可以使用@Autowired或者@Resource注解注入。
1.4类型转换
将String类型转换成Date类型
-
继承Converter接口,定义泛型String,Date
-
实现convert方法
-
public class StringToDateConverter implements Converter<String,Date> { @Override public Date convert(String source) { SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd HH-mm-ss"); try { return format.parse(source); } catch (ParseException e) { throw new RuntimeException(); } } }
-
-
在xml文件里注册
-
<bean id="converter" class="com.jsoft.converter.StringToDateConverter"> </bean>
-
-
注册Spring自带的类型转换,将converter放入
-
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set value-type="com.jsoft.converter.StringToDateConverter"> <ref bean="converter"></ref> </set> </property> </bean>
-
本文作者:(≧∇≦)(≧∇≦)(≧∇≦)
本文链接:https://www.cnblogs.com/gycddd/p/16712633.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步