spring --注解

初学spring的时候,我们都使用spring的配置文件applicationContext.xml(默认名,名字可以改)中的bean标签,来实现spring ioc容器来管理生成对象,那么这就会有一个问题,当我们的类多起来的时候,那么xml文件中就会有太多的bean,看上去着实是头疼,为了解决这个问题,注解横空出世。

  使用注解能够让xml文件减肥,并且清晰易懂;

  下面来看看常使用的注解:

    @Service

    @Repository

把这两个放在一起讲,个人感觉并没有太大的区别,而@Repository就是使用在model层的dao中,而@service就是在服务层中,这样的好处自然是更加的清晰,一看就知道这个类是属于哪个层次了;

    就那以其中的一个举例子:

@Repository("userDao")
public class UserDaoImp extends SqlSessionDaoSupport implements UserDao{
上面的意思其实就等同于:
	<bean id="userDao"  class="包.UserDaoImp"/>
@Repository("userDao")你也可以@Repository,不写名字,那么默认为类名首字母小写,也就是userDaoImp


@Autowired 自动装配

当我们在一个类中定义属性的时候,我们需要在bean中来设置属性的值,@service和@repository帮助我们省略了bean标签的设置,那么属性值的设置就由自动装配标签来注入属性值,上代码:

@Repository("userDao")
public class UserDaoImp extends SqlSessionDaoSupport implements UserDao{
public class UserServiceImp extends SqlSessionDaoSupport implements BaseService{
    @Autowired
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

这样就在UserServiceImp中注入了userDao

扫描二维码关注公众号,回复: 2326646 查看本文章

当然了,该注解也可以使用在方法中,来注入参数:

 @Autowired//自动装配,从application.xml中
    @Override
    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
        // TODO Auto-generated method stub
        System.out.println("i am sqlsesion");
        super.setSqlSessionFactory(sqlSessionFactory);
    }
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="configLocation"  value="classpath:mybatis-config.xml"/>
	</bean>

说明一下,该注解是通过type来注入的,也就是根据在bean标签中的class来注入的,如果在xml中同一个class有两个bean,那么将会出错

注意点:需要跟上set方法,否则报错;

@Scope

  这个一看就能猜出来,用来设置作用域,比如spring mvc中的controller默认是单例,可以使用该注解设置为原型

    

@Controller("firstController")
@Scope("prototype")
public class FirstController {

原型:每次访问都生成一个对象


另外,使用注解需要在applicationContext.xml中设置

<context:component-scan base-package="包名.类名"/>
告诉容器,我们使用了注解


    

猜你喜欢

转载自blog.csdn.net/qq_39512671/article/details/80995596