0
点赞
收藏
分享

微信扫一扫

Spring注解开发

扶摇_hyber 2022-02-28 阅读 131

文章目录

Spring注解开发

一、Spring注解概论


二、Spring原始注解

1、引用数据

注解说明
@Component使用在类上用于实例化Bean
@Controller使用在web层类上用于实例化Bean
@Service使用在service层类上用于实例化Bean
@Repository使用在dao层类上用于实例化Bean
@Autowired使用在字段上用于根据类型依赖注入
@Qualifier结合@Autowired一起使用用于根据名称进行依赖注入
@Resource相当于@Autowired+@Qualifier,按照名称进行注入
@Value注入普通属性
@Scope标注Bean的作用范围
@PostConstruct使用在方法上标注该方法是Bean的初始化方法
@PreDestroy使用在方法上标注该方法是Bean的销毁方法

在这里插入图片描述

public class test01 {
    @Test
    public void test1(){
        ApplicationContext app = new ClassPathXmlApplicationContext("applicatonContext.xml");
        UserServiceImpl userService = (UserServiceImpl) app.getBean("userService");
        userService.save();
    }
}
//Repository(dao层)相当于下面的xml配置
//<bean id="userDao" class="com.kang.dao.impl.UserImpl"></bean>
//相当于ID
@Repository("userDao")
public class UserImpl implements UserDao {
    @Override
    public void save() {
        System.out.println("save running 。。	。。。");
    }
}
/**
 *     <bean id="userService" class="com.kang.service.impl.UserServiceImpl">
 *         <property name="userDao" ref="userDao"></property>
 *     </bean>
 */

//相当于<bean id="userService" class="com.kang.service.impl.UserServiceImpl">
//相当于ID
@Service("userService")
public class UserServiceImpl implements UserService {
    //相当于<property name="userDao" ref="userDao"></property>
    //@Autowired  //按照数据类型从spring容器中进行配置,倘如只有一个这种数据类型,那么则不需要写下面的注解
    //@Qualifier("userDao")   //根据id值从容器中进行匹配,但是主要此处@Qualifier和@Autowired一起使用
    @Resource(name = "userDao")   //@Resource相当于@Qualifier+@Autowired
    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void save(){
        userDao.save();
    }
}

2、普通数据

/**
 *     <bean id="userService" class="com.kang.service.impl.UserServiceImpl">
 *         <property name="userDao" ref="userDao"></property>
 *     </bean>
 */

//相当于<bean id="userService" class="com.kang.service.impl.UserServiceImpl">
//相当于ID
@Service("userService")
public class UserServiceImpl implements UserService {
    //相当于<property name="userDao" ref="userDao"></property>
    //@Autowired  //按照数据类型从spring容器中进行配置,倘如只有一个这种数据类型,那么则不需要写下面的注解
    //@Qualifier("userDao")   //根据id值从容器中进行匹配,但是主要此处@Qualifier和@Autowired一起使用
    @Resource(name = "userDao")   //@Resource相当于@Qualifier+@Autowired
    private UserDao userDao;

    //普通数据的注入
    @Value("www.baidu.com")
    private String url;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void save(){
        userDao.save();
        System.out.println(url);
    }
}

若要使用EL表达式,首先先在xml文件中加载properties文件,接着@Value结合EL表达式

@Value"${key}"
/**
 *     <bean id="userService" class="com.kang.service.impl.UserServiceImpl">
 *         <property name="userDao" ref="userDao"></property>
 *     </bean>
 */

//相当于<bean id="userService" class="com.kang.service.impl.UserServiceImpl">
//相当于ID
@Service("userService")
public class UserServiceImpl implements UserService {
    //相当于<property name="userDao" ref="userDao"></property>
    //@Autowired  //按照数据类型从spring容器中进行配置,倘如只有一个这种数据类型,那么则不需要写下面的注解
    //@Qualifier("userDao")   //根据id值从容器中进行匹配,但是主要此处@Qualifier和@Autowired一起使用
    @Resource(name = "userDao")   //@Resource相当于@Qualifier+@Autowired
    private UserDao userDao;

    //普通数据的注入(结合EL表达式)
    @Value("${jdbc.url}")
    private String url;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void save(){
        userDao.save();
        System.out.println(url);
    }
}

3、标注初始化以及销毁方法

@Service("userService")
public class UserServiceImpl implements UserService {
    //相当于<property name="userDao" ref="userDao"></property>
    //@Autowired  //按照数据类型从spring容器中进行配置,倘如只有一个这种数据类型,那么则不需要写下面的注解
    //@Qualifier("userDao")   //根据id值从容器中进行匹配,但是主要此处@Qualifier和@Autowired一起使用
    @Resource(name = "userDao")   //@Resource相当于@Qualifier+@Autowired
    private UserDao userDao;

    //普通数据的注入
    @Value("${jdbc.url}")
    private String url;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void save(){
        userDao.save();
        System.out.println(url);
    }

    //标注初始化方法
    @PostConstruct
    public void init(){
        System.out.println("初始化。。。。。");
    }
    
    //标注销毁方法
    @PreDestroy
    public void destroy(){
        System.out.println("销毁。。。。.");
    }
}

三、 Spring新注解

注解说明
@Configuration用于指定当前类是一个 Spring 配置类,当创建容器时会从该类上加载注解
@ComponentScan用于指定 Spring 在初始化容器时要扫描的包。 作用和在 Spring 的 xml 配置文件中的<context:component-scan base-package=“com.kang”></ context:component-scan >作用一样
@Bean使用在方法上,标注将该方法的返回值存储到 Spring 容器中
@PropertySource用于加载.properties 文件中的配置
@Import用于导入其他配置类

1、新注解使用方法

@Configuration //标注为主配置文件
@ComponentScan("com.kang") //扫描
@Import(DataSourceConfiguration.class) //导入外部配置文件
public class SpringConfiguration {
}
@PropertySource("jdbc.properties") //导入properties配置文件
public class DataSourceConfiguration {

    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String user;
    @Value("${jdbc.password}")
    private String password;

    @Bean(name = "dataSource") //标注将该方法的返回值存储到 Spring 容器中
    public DataSource getDataSource() throws Exception {
        //创建数据源
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        //设置数据库连接参数
        dataSource.setDriverClass(driver);
        dataSource.setJdbcUrl(url);
        dataSource.setUser(user);
        dataSource.setPassword(password);
        return dataSource;
    }
}
    @Test
    public void test2() throws SQLException {
        ApplicationContext app = new AnnotationConfigApplicationContext(SpringConfiguration.class);
        UserServiceImpl userService = (UserServiceImpl) app.getBean("userService");
        userService.save();
        DataSource dataSource = (DataSource) app.getBean("dataSource");
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
    }

rviceImpl userService = (UserServiceImpl) app.getBean(“userService”);
userService.save();
DataSource dataSource = (DataSource) app.getBean(“dataSource”);
Connection connection = dataSource.getConnection();
System.out.println(connection);
}


举报

相关推荐

Spring 注解开发

spring注解开发

spring注解开发(7)

14.0、Spring注解开发

Spring纯注解开发

注解开发Spring AOP

Spring 注解开发详解

0 条评论