<!-- 无参构造配置 主要方式-->
<bean id="user" class="xin.jeson.User"/>
<!-- 静态工厂配置 -->
<bean id="user" class="xin.jeson.UserFactoryByStatic" factory-method="getUser"/>
<!-- 实例工厂配置 -->
<bean id="userFactory" class="xin.jeson.UserFactory"/>
<bean id="user" factory-bean="userFactory" factory-method="getUser"/>
// 加载 xml
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User)context.getBean("user"); // 获取对象
System.out.println(user);
无参构造方法创建
必须存在无参构造,默认存在,但如果声明了有参构造默认就没有无参构造
// 构建工厂类
public class UserFactoryByStatic {
public static User getUser() {
return new User();
}
}
// 构建工厂类
public class UserFactory {
public User getUser() {
return new User();
}
}
globalSession :Web 项目中,Porlet 环境中存在,否则相当于 session
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- xmlns:p 只有使用 P 命名空间注入才需要此约束 -->
<bean id="userDao" class="xin.jeson.UserDao"/>
<!-- 使用 setter 注入 (主要的注入方式) -->
<bean id="user" class="xin.jeson.User">
<property name="name" value="Jeson"/>
<property name="userDao" ref="userDao"/>
</bean>
<!-- 使用有参构造注入 -->
<bean id="user" class="xin.jeson.User">
<constructor-arg name="name" value="Jeson"/>
<constructor-arg ref="userDao"/>
</bean>-->
<!-- P 命名空间注入 -->
<bean id="user" class="xin.jeson.User" p:name="Jeson" p:userDao-ref="userDao"/>
</beans>
<!-- 另有注解注入 -->
需要导入 spring-aop jar 包
配置文件中需要加入 context 约束
// applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
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">
<!-- 开启扫描注解 -->
<context:component-scan base-package="xin"/>
<!-- 多个包可以逗号隔开,如果包太多可以直接写最大的包名字,会包含所有子包 -->
<!-- 仅扫描属性上面的注释 -->
<context:annotation-config/>
</beans>
@Repository
@Scope(value="prototype")
@Component(value="userDao")
public class UserDao {
public void show() {
System.out.println("dao");
}
}
@Service(value="userService")
public class UserService {
@Autowried // 根据类的类型名字找类
private UserDao userDao;
@Resource(name="userDao") // 根据定义类的名字找类
private UserDao userDao;
public void show() {
System.out.println("service");
userDao.show();
}
}
@Autowried // 同上示例
private UserDao userDao;
private UserDao userDao;
@Autowired
public UserService(UserDao userDao) {
this.userDao = userDao;
}
private UserDao userDao;
@Autowired
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
配置文件中创建对象,使用注解进行属性注入
Spring学习笔记(三)----Spring的Bean管理
原文:https://www.cnblogs.com/qq188380780/p/11443833.html