[关闭]
@File 2019-08-19T08:13:57.000000Z 字数 3138 阅读 119

spring-ioc 配置

java


1. XML配置

基本格式

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <!-- id/name: 调用是的名称 -->
  6. <!-- class: 类的位置 -->
  7. <bean id="ldy" class="com.lidaye.Lidaye"></bean>
  8. <bean id="uif" class="com.lidaye.UserInfo"></bean>
  9. </beans>

通过有参构造给属性赋值

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <bean id="ldy" class="com.lidaye.Lidaye">
  6. <!-- constructor-age: 通过构造方法设置属性值 -->
  7. <!-- 通过构造函数参数位数赋值 -->
  8. <constructor-arg index="0" type="int" value="1"/>
  9. <!-- 通过参数名称赋值 -->
  10. <constructor-arg name="name" value="lidaye"/>
  11. <!-- 通过参数名赋予list -->
  12. <constructor-arg name="dream">
  13. <list>
  14. <value>soldier</value>
  15. <value>scientist</value>
  16. <value>pilot</value>
  17. </list>
  18. </constructor-arg>
  19. <!-- 通过参数名赋予map -->
  20. <constructor-arg name="score">
  21. <map>
  22. <entry key="math" value="90"/>
  23. <entry key="english" value="85"/>
  24. </map>
  25. </constructor-arg>
  26. <!-- 通过参数名赋予另一个对象 -->
  27. <constructor-arg name="info" ref="uif"/>
  28. </bean>
  29. <bean id="uif" class="com.lidaye.UserInfo"></bean>
  30. </beans>

通过 set 方法给属性赋值

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <bean id="ldy" class="com.lidaye.Lidaye">
  6. <!-- property: set方法修改属性值 -->
  7. <!-- 通过属性名赋予值 -->
  8. <property name="name" value="lidaye" />
  9. <!-- 通过属性名赋予对象 -->
  10. <property name="info" ref="uif" />
  11. </bean>
  12. <bean id="uif" class="com.lidaye.UserInfo"></bean>
  13. </beans>

2. 注解配置

注册

  1. <!-- beans 属性要引入 xmlns:context -->
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <beans xmlns="http://www.springframework.org/schema/beans"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xmlns:mvc="http://www.springframework.org/schema/mvc"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
  8. <!-- 配置spring注解扫描位置 -->
  9. <context:component-scan base-package="com.lidaye" />
  10. <!-- 添加spring-mvc注解支持 -->
  11. <mvc:annotation-driven />
  12. </beans>

@Component 注册类(通用)

  1. // 在实现类上通过 Component 注册
  2. @Component() // 无参时,调用名为类名:Lidaye
  3. @Component("ldy") // 调用名为ldy
  4. public class Lidaye{}

@Service 注册(建议业务层用,效果一样)

@Controller 注册(建议控制层用,效果一样)

@Repository 注册(建议数据层用,效果一样)

注入

@Autowired spring自带注入(非线程安全)

  1. // 根据属性或参数的类型找
  2. // 不强制对象存在,默认强制
  3. @Autowired(required = false)

@Resource jsr250注入(线程安全)

  1. // 默认根据属性名或参数名找,找不到再按照类型找
  2. // 设置注册的名
  3. @Resource(name = "注册的名称")
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注