1.注解实现
@Component和其衍生注解,如@Service、@Repository、@Controller等。这些注解都是通过spring的组件扫描机制来扫描并创建对象的
代码语言:javascript复制@Service
public class UserService {
@Autowired
private UserMapper userMapper;
//新增
public Boolean add(User user){ return userMapper.add(user);}
//删除
public Boolean del(int id){return userMapper.del(id);}
//修改
public Boolean edit(User user){return userMapper.edit(user);}
//查找全部
public List<User> findall(){return userMapper.findall();}
//查找单个
public User findone(int id){return userMapper.findone(id);}
//验证
public User login(User user){return userMapper.login(user);}
}
2.xml配置实现
代码语言:javascript复制<bean id="user" class="com.example.User"/>
以上为无参构造实现方式(默认)
对于有参构造对象的创建还需要根据具体注解如@Value或者xml语法来实现
一、
代码语言:javascript复制@Service
public class UserService {
@Autowired
private UserMapper userMapper;
@Value("${user.age}")
public String age;
@Value("Yongwang Dong")
public String name;
}
如上使用@Autowired、@Value注解来注入三个属性值,其中@Value使用了 ${}语法来引用配置文件中的值
二、
xml有参构造创建对象有三种实现方式:
1.index下标方式
代码语言:javascript复制<bean id="user" class="com.hardy.pojo.User">
<constructor-arg index="0" value="hardy"/>
</bean>
2.参数类型匹配(容易冲突)
代码语言:javascript复制<bean id="user" class="com.hardy.pojo.User">
<constructor-arg type="java.lang.String" value="hardy"/>
</bean>
3.直接根据参数名称匹配
代码语言:javascript复制<bean id="user" class="com.hardy.pojo.User">
<constructor-arg name="name" value="hardy3"/>
</bean>
小结:Spring将类对象的创建、管理、分配统一交由ioc实现,解决不同组件直接的依赖关系,降低系统耦合性,使得程序员更专注于业务代码;IOC(控制反转),控制:Spring开始控制对象,反转:程序本事不需创建对象,而是被动接收对象。