目录
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-contextartifactId>
- <version>5.3.19version>
- dependency>
-
- <dependency>
- <groupId>junitgroupId>
- <artifactId>junitartifactId>
- <version>4.13.2version>
- <scope>testscope>
- dependency>
- "1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- https://www.springframework.org/schema/beans/spring-beans.xsd">
- <bean id="userService" class="com.lagou.service.impl.TransferServiceImpl">
- bean>
- <bean id="userService" class="com.lagou.factory.BeanFactory"
- factory-method="getTransferService">bean>
- <bean id="beanFactory"
- class="com.lagou.factory.instancemethod.BeanFactory">bean>
- <bean id="transferService" factory-bean="beanFactory"
- factory-method="getTransferService">bean>
- <bean id="transferService"
- class="com.lagou.service.impl.TransferServiceImpl" scope="singleton">
- bean>
- <bean id="userDao" class="com.test.UserDao">
- <constructor-arg name="name" value="zhangsan"/>
- <constructor-arg name="age" value="18"/>
- <constructor-arg name="friend" ref="user"/>
- bean>
- <bean id="userDao" class="com.test.UserDao">
- <property name="name" value="zhangsan"/>
- <property name="age" value="18"/>
- <property name="friend" ref="user"/>
- bean>
- <bean id="userDao" class="com.test.UserDao">
- <property name="myArray">
- <array>
- <value>array1value>
- <value>array2value>
- <value>array3value>
- array>
- property>
- <property name="myMap">
- <map>
- <entry key="key1" value="value1"/>
- <entry key="key2" value="value2"/>
- map>
- property>
- <property name="mySet">
- <set>
- <value>set1value>
- <value>set2value>
- set>
- property>
- <property name="myProperties">
- <props>
- <prop key="prop1">value1prop>
- <prop key="prop2">value2prop>
- props>
- property>
- bean>
|
xml形式
|
对应的注解形式
|
|
标签
|
@Component("accountDao"),注解加在类上
bean的id属性内容直接配置在注解后面如果不配置,默认定义个这个bean的id为类的类名首字母小写;
另外,针对分层代码开发提供了@Componenet的三种别名@Controller、@Service、@Repository分别用于控制层类、服务层类、dao层类的bean定义,这四个注解的用法完全一样,只是为了更清晰的区分而已
|
|
标签的scope属性
|
@Scope("prototype"),默认单例,注解加在类上
|
|
标签的init-method属性
|
@PostConstruct,注解加在方法上,该方法就是初始化后调用的方法
|
|
标签的destory-method属性
|
@PreDestory,注解加在方法上,该方法就是销毁前调用的方法
|
- @Autowired
- private AccountDao accountDao;
- @Autowired
- @Qualifier(name="jdbcAccountDaoImpl")
- private AccountDao accountDao;
- @Resource
- private AccountDao accountDao;
- @Resource(name="studentDao")
- private StudentDao studentDao;
- @Resource(type="TeacherDao")
- private TeacherDao teacherDao;
- @Resource(name="manDao",type="ManDao")
- private ManDao manDao;
- <dependency>
- <groupId>javax.annotationgroupId>
- <artifactId>javax.annotation-apiartifactId>
- <version>1.3.2version>
- dependency>
- ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
- UserDao userDao = (UserDao)context.getBean("userDao");
- web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
- <web-app>
- <display-name>Archetype Created Web Applicationdisplay-name>
-
- <context-param>
- <param-name>contextConfigLocationparam-name>
- <param-value>classpath:applicationContext.xmlparam-value>
- context-param>
-
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
- listener>
- web-app>
- web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
- <web-app>
- <display-name>Archetype Created Web Applicationdisplay-name>
-
- <context-param>
- <param-name>contextClassparam-name>
- <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContextparam-value>
- context-param>
-
- <context-param>
- <param-name>contextConfigLocationparam-name>
- <param-value>com.lagou.edu.SpringConfigparam-value>
- context-param>
-
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
- listener>
- web-app>
<bean id="testBean" calss="com.test.LazyBean" lazy-init="true" />
- <beans default-lazy-init="true">
-
- beans>
- public class UserFactoryBean implements FactoryBean
{ - private String userInfo;//名字,年龄
-
- public void setUserInfo(String userInfo) {
- this.userInfo = userInfo;
- }
-
- //自定义bean的创建过程
- @Override
- public User getObject() throws Exception {
- User user = new User();
- String[] strings = userInfo.split(",");
- user.setName(strings[0]);
- user.setAge(Integer.parseInt(strings[1]));
- return user;
- }
-
- //返回bean类型
- @Override
- public Class> getObjectType() {
- return User.class;
- }
- //返回作用域是否单例,默认单例
- @Override
- public boolean isSingleton() {
- return FactoryBean.super.isSingleton();
- }
- }
- <bean id="userFactoryBean" class="com.test.UserFactoryBean">
- <property name="userInfo" value="张三,19"/>
- bean>
- ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
- User userDao = (User)context.getBean("userFactoryBean");
- System.out.println(userDao);