JAVA Spring学习笔记------注解开发

注解开发

可以在对应的类中配置Bean

具体方法如下:

利用@Component 来声明当前类为Bean

@Component("userDaoimpl")
//Reposity和component效果一样
//spring 对于不同的层提供了不同的方法
//@Repository
public class UserDaoimpl implements UserDao {
    private String id;
    private String password;
}

同时要在xml文件中配置相关的说明这是一个Bean

<context:component-scan base-package="com.demo.Dao.impl"/>

也就是这样

这样会自动装填Imp目录下所有的Component

如果在Component中没有说明当前类对应的名称

则利用getBean()方法创建对象时,参数为对应的类

spring提供了@Component的三个衍生注解

分别对应三个不用的层次

@Controller 用于表现层Bean定义

@Service    用于业务层Bean定义

@Repository 用于数据层Bean定义

 纯注解开发

通过Java类来代替xml文件

我们首先定义一个配置类

名字随便

我这里叫做springConfig

然后我们利用注解来说明这是一个配置类

@Configuration
@Configuration
@ComponentScan("com.demo")
public class SpringConfig {
}
@ComponentScan("com.demo")
这个相当于搜索com.demo下的所有Bean
如果要搜索多个
需要用{}圈起来即可
@Configuration
@ComponentScan({"com.demo",“xxxxx”})
public class SpringConfig {
}

 


因为xml被取代了
所以我们不再通过xml来获得
ApplicationContext对象
而是通过
AnnotationConfigApplicationContext方法来获得
代码如下
        ApplicationContext applicationContext =
                new AnnotationConfigApplicationContext(SpringConfig.class);

//        ApplicationContext applicationContext =
//              new ClassPathXmlApplicationContext("applicationContext.xml");

        UserDao userDao = (UserDaoimpl)applicationContext.getBean("userDaoimpl");

如果运行时有

Failed to read candidate component class: file [ ]; nested exception is org.springframework.core.NestedIOException报错

那是因为spring版本太低无法与JDK相兼容导致的

所以要升高spring版本

利用注解完成自动依赖注入

在Service中需要用到Dao对象

刚开始我们是通过New来创建

后来通过xml文件来实现bean的依赖

现在取消了xml文件

我们通过注解来完成依赖

只需要通过@Autowired来完成依赖即可

    @Autowired
    //利用注释加入依赖 根据类型自动装填
    private UserDao userDao;

以上是利用类型自动装配

也可以通过名称来完成装配

    
  @Autowired

  //利用名称完成依赖 前提必须有Autowired
    @Qualifier("userDaoimpl")
    private UserDao userDao;

使用@Value 能够完成简单类型的注入

同样的我们可以把所有的数据放在property文件中

然后在我们的配置类里

利用注解加载property文件即可

例如:

@PropertySource("Jdbc.property")

利用注解管理第三方Bean
以数据库为例首先我们要建立一个Java类让这个类中的方法返回我们想要的类型
public class JdbcConfig {
    //首先我们定义一个方法来获得要管理的对象
    //然后我们通过@Bean来表示当前方法是的返回值是一个Bean
    @Bean
    public DataSource getDataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        return dataSource;
    }
}

然后在我们的配置文件中导入这个类

@Configuration
@ComponentScan("com.demo")
@PropertySource("Jdbc.property")
@Import(JdbcConfig.class)
public class SpringConfig {
}

然后在Main函数中根据类名来通过Bean创建相应的对象就可以了

对于第三方Bean中如果有对其他类的依赖

那么@Bean方法会自动装入

posted @ 2022-09-28 18:47  zzRh_5479  阅读(35)  评论(0编辑  收藏  举报