SpringIOC注入

在lagou的训练营的学习历程

SpringIOC实例化Bean的三种方式:
1.使用无参构造器
2.静态方法
3.实例化方法。他要先实例化创建类(和2的区别),再调用。


XML注入属性
DI依赖注入,根据实体类的属性的名称使用name属性注入,index按照对应位置
(set注入使用bean使用ref,一般属性用value。)

<!--id标识对象,class是类的全限定类名-->
<!--scope:定义bean的作用范围 singleton:单例,IOC容器中只有一个该类对象,默认为singletonprototype:原型(多例),每次使用该类的对象(getBean),都返回给你一个新的对象,Spring只创建对象,不管理对象 -->
-<bean destroy-method="destory" init-method="init" scope="singleton" class="com.dao.impl.JdbcTemplateDaoImpl" id="accountDao">
<!--set注入使用property标签,如果注入的是另外一个bean那么使用ref属性,如果注入的是普通值那么使用的是value属性-->
<!--<property name="ConnectionUtils" ref="connectionUtils"/><property name="name" value="zhangsan"/><property name="sex" value="1"/><property name="money" value="100.3"/>-->
<!--<constructor-arg index="0" ref="connectionUtils"/><constructor-arg index="1" value="zhangsan"/><constructor-arg index="2" value="1"/><constructor-arg index="3" value="100.5"/>-->
<!--name:按照参数名称注入,index按照参数索引位置注入-->
<constructor-arg ref="connectionUtils" name="connectionUtils"/>
<constructor-arg name="name" value="zhangsan"/>
<constructor-arg name="sex" value="1"/>
<constructor-arg name="money" value="100.6"/>
<!--set注入注入复杂数据类型-->
-<property name="myArray">
<array>
</property>
-<property name="myMap">
-<map>
<entry value="value1" key="key1"/>
<entry value="value2" key="key2"/>
</map>
</property>
-<property name="mySet">
-<set>
<value>set1</value>
<value>set2</value>
</set>
</property>
-<property name="myProperties">
-<props>
<prop key="prop1">value1</prop>
<prop key="prop2">value2</prop>
</props>
</property>
</bean>

 

XML和注解模式注入
@Componene注解去注解关联的bean标签,在类上加注解
针对不同的层面有三个别名@Controller@Service@Reposittory这四个注解完全一样
一个区分而已。
@Autowired加在属性上按照类型注入(按照你给的类型)
如果一个接口有多个实现类可以增加@Qualifier使用制定具体id
@Resource按照名称注入时jdk的注解。jdk11移除(不建议使用)使用spring推荐的@Autowired
使用注解要使用配置开启注解扫描。<context>标签

 // @Autowired 按照类型注入 ,如果按照类型无法唯一锁定对象,可以结合@Qualifier指定具体的id
    @Autowired
    @Qualifier("accountDao")
    private AccountDao accountDao;

 

纯注解,使用java配置类
使用@Configuration标志这个类为配置类
使用@ComponentScan扫描配置
@PropertySourrce配置外部的配置(jdbc配置文件)
@Value变量赋值
@Bean

// @Configuration 注解表明当前类是一个配置类
@Configuration
@ComponentScan({"com.lagou.edu"})
@PropertySource({"classpath:jdbc.properties"})
/*@Import()*/
public class SpringConfig {

    @Value("${jdbc.driver}")
    private String driverClassName;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

 

把返回的对象加入ioc容器


多个配置类可以使用improt标记一个为启动入口。
javase启动 启动类加载
web启动xml内的监听器

 

posted @ 2020-06-14 10:44  BadFisher  阅读(146)  评论(0)    收藏  举报