配置好后的调用方式
//获取aplicationContext.xml 中的配置
ApplicationContext context = new ClassPathXmlApplicationContext("aplicationContext.xml");
//根据<bean>标签中的id获取对象
User user = (User) context.getBean("user");
logger.info(user.toString());
对象的创建及属性的注入
注入方式则有三种,分别是配置注入(XML)、注解注入、bean和configuration注入。
XML方式创建和注入
- 基本类型注入
<!--利用property标签进行注入,name为表名,value为数据-->
<bean id="user" class="com.cn.bean.User">
<property name="uid" value="1"></property>
<property name="username" value="测试"></property>
</bean>
- 对象类的注入(实例化)
<!--
1、创建属性对象MySqlUserDaoImpl(如果是Bean类型)
a)必须添加setter()方法注入属性(演示采用该方式)
b)通过构造方法注入属性(后面讲解)
2、创建对象userService
-->
<bean id="userDao" class="com.java.dao.impl.MySqlUserDaoImpl"></bean>
<bean id="userService" class="com.java.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
//注意需要在被注入类添加setter方法
public void setUserDao(UserDao userdao){
this.userDao = userdao;
}
- 集合类型注入
<!--
集合属性的注入:
list:添加list节点,然后内部如果对象是bean用ref,如果是基本数据类型用value
set:添加set节点,然后内部如果对象是bean用ref,如果是基本数据类型用value
map:添加map节点,由于map存储的数据是key和value,添加一个entry节点
对应key,如果类型是基本数据类型用value,否则用ref
对应value,如果类型是基本数据类型用value,否则用ref
properties:添加props节点,然后里面再添加prop节点
-->
<bean id="test" class="com.java.bean.Test">
<property name="list">
<list>
<value>鲁班</value>
<value>公孙墨</value>
</list>
</property>
<property name="set">
<set>
<value>红楼梦</value>
<value>三国演义</value>
</set>
</property>
<property name="map">
<map>
<entry>
<key><value>k9501</value></key>
<value>Java架构师班</value>
</entry>
<entry>
<key><value>k9502</value></key>
<value>Java全栈班</value>
</entry>
<entry>
<key><value>k9503</value></key>
<value>前端全栈班</value>
</entry>
</map>
</property>
<property name="properties">
<props>
<prop key="username">root</prop>
<prop key="password">1234abc</prop>
</props>
</property>
</bean>
注解注入
参考博客:https://www.cnblogs.com/wangbin2188/p/9014400.html
注解的作用:创建Bean,注入到容器;为Bean注入属性
注解的分类
用于创建类的注解: @Component():把普通pojo实例化到spring容器中,相当于配置文件中的;@Service():业务层的类使用;@Controller():控制器(控制层)类使用; @Repository():Dao数据访问层(持久层)的类使用(MyBatis使用的是代理,不需要写Dao)
*如果括号内不提供命名,则系统默认以小写字母开头的类名;注解标签相当于XML配置文件中的 <bean id="" class=""/>,其中注解的name相当于xml文件中的id。之所以创建这三个功能与@Component等效的注解,是为了以后对其进行功能上的扩展,使它们不再等效。
@Component("user")
public class user{ }
@Service("userService")
public class userServiceImpl implements userService {}
@Controller
@Repository("userDao")
public class MySqlUserDao implements UserDao {}
注入属性的注解: @Autowired:按照类型进行注入,如果Spring容器中创建并管理了某个Bean,要注入的时候,到容器中查找是否有该类型的Bean,如果有就注入,没有就报异常;@Qualifier("name"):按名称注入域属性,要与Autowired联合使用且AutoWired在前;@Resource(name=“”):Autowired和Qualifier的结合体,若无Name则按类型,若有Name则按名称;@value("张三"):基本数据类型属性注入。
环境配置
1、POM依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.23.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.23.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.23.RELEASE</version>
</dependency>